Repository navigation
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
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
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
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".