Skip to content
This repository was archived by the owner on Jun 2, 2026. It is now read-only.

Sync fork main into upstream: Tap ingestion, advanced GraphQL queries, and frontend refresh - #42

Open
Kzoeps wants to merge 152 commits into
mainfrom
production
Open

Kzoeps wants to merge 152 commits into
mainfrom
production

Merge pull request #21 from GainForest/admin-validation

bf8163a
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Apr 21, 2026 in 24m 37s

Code review found 3 important issues

Found 5 candidates, confirmed 3. See review comments for details.

Details

Severity Count
🔴 Important 3
🟡 Nit 0
🟣 Pre-existing 0
Severity File:Line Issue
🔴 Important .agents/skills/deploy-railway/SKILL.md:101-107 SKILL.md references stale env var NEXT_PUBLIC_API_URL (renamed to NEXT_PUBLIC_HYPERINDEX_URL)
🔴 Important internal/database/repositories/records.go:30-37 SQLite 999-parameter limit exceeded when combining multiple IN filter conditions
🔴 Important internal/graphql/schema/builder.go:875-878 Search query minimum length: docs say 2 chars, code enforces 3 chars

Annotations

Check failure on line 107 in .agents/skills/deploy-railway/SKILL.md

See this annotation in the file changed.

@claude claude / Claude Code Review

SKILL.md references stale env var NEXT_PUBLIC_API_URL (renamed to NEXT_PUBLIC_HYPERINDEX_URL)

SKILL.md references the stale env var `NEXT_PUBLIC_API_URL` at lines 101 and 106, but this PR renames it to `NEXT_PUBLIC_HYPERINDEX_URL` everywhere else (Dockerfile, env.ts, .env.example, docs/ENV_VARS.md). A developer following SKILL.md to deploy on Railway will set the wrong build arg, causing Next.js to silently fall back to `http://127.0.0.1:8080`, which breaks the production frontend.

Check failure on line 37 in internal/database/repositories/records.go

See this annotation in the file changed.

@claude claude / Claude Code Review

SQLite 999-parameter limit exceeded when combining multiple IN filter conditions

The per-filter `MaxINListSize=100` cap does not protect against the aggregate parameter count when multiple IN filters are combined. With `MaxFilterConditions=20`, a worst-case query generates 20×100 + 4 fixed params = 2004 SQL parameters — more than double SQLite's hard `SQLITE_MAX_VARIABLE_NUMBER=999` limit stated in the code comments. Even a modest query with 10 fields each filtered by 100 IN values (1004 params) exceeds this limit. Neither `buildFilterClause` nor `GetByCollectionSortedWithKe

Check failure on line 878 in internal/graphql/schema/builder.go

See this annotation in the file changed.

@claude claude / Claude Code Review

Search query minimum length: docs say 2 chars, code enforces 3 chars

The API documentation states the search query minimum is 2 characters, but the code in `createSearchResolver()` enforces a minimum of 3 characters. Clients following the documented contract will receive unexpected errors for 2-character queries; fix by updating the docs to say "minimum 3 characters".