Garry's Opinionated OpenClaw/Hermes Agent Brain
This report presents the forensic synthetic code analysis of garrytan/gbrain, a TypeScript project with 26,174 GitHub stars. SynthScan v2.0 examined 563,798 lines of code across 2312 source files, recording 2517 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 8.7 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2517 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/migrate.test.ts | 66 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 68 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 76 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 125 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 127 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 128 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 130 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 302 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 304 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 375 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 377 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 473 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 475 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 553 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 555 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 722 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 727 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 787 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 794 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1024 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1026 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1070 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1072 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1534 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1537 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1614 | // ─── v0.37.2.0 — v80 takes_unresolvable_quality_v0_37_2_0 ────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1800 | // ─── v0.38.0.0 — v81 pages_provenance_columns ───────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1979 | // ─── v0.40.2.0 — v89 facts_event_type_column ─────────────────────────────── | COMMENT |
| MEDIUM | test/dream-postgres.serial.test.ts | 46 | // ─── BUG 2: no checkout → DB phases run, FS phases skip ────────────── | COMMENT |
| MEDIUM | test/dream-postgres.serial.test.ts | 167 | // ─── A7: edges-only cycle reports ok, not clean ───────────────────── | COMMENT |
| MEDIUM | test/dream-postgres.serial.test.ts | 205 | // ─── both-null hard error preserved ───────────────────────────────── | COMMENT |
| MEDIUM | test/source-health.test.ts | 132 | // ── v0.41.32.0 commit-relative staleness ────────────────────────────── | COMMENT |
| MEDIUM | test/gstack-learnings-coupling.test.ts | 45 | // ─── buildLearningEntry ───────────────────────────────────────────── | COMMENT |
| MEDIUM | test/gstack-learnings-coupling.test.ts | 101 | // ─── writeIncorrectResolution ─────────────────────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 13 | // ── Stub engine that records queries ─────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 53 | // ── add ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 161 | // ── list ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 177 | // ── remove ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 210 | // ── default ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/sources.test.ts | 224 | // ── federate / unfederate ────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 32 | // ─── Mock engine ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 94 | // ─── parseExtractorOutput ─────────────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 163 | // ─── contentHash ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 179 | // ─── hasCompleteFence ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 209 | // ─── extractExistingTakesForDedup ─────────────────────────────────── | COMMENT |
| MEDIUM | test/propose-takes.test.ts | 243 | // ─── Phase integration ────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/voice-gate.test.ts | 42 | // ─── parseJudgeOutput ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/voice-gate.test.ts | 82 | // ─── gateVoice ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/voice-gate.test.ts | 238 | // ─── Mode parity ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/voice-gate.test.ts | 267 | // ─── Templates (deterministic) ────────────────────────────────────── | COMMENT |
| MEDIUM | test/think-trajectory-injection.test.ts | 202 | // ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/think-trajectory-injection.test.ts | 204 | // ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/think-trajectory-injection.test.ts | 318 | // ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/think-trajectory-injection.test.ts | 320 | // ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/source-id-tx-regression.test.ts | 468 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/source-id-tx-regression.test.ts | 478 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/cycle-synthesize.test.ts | 339 | // ─── v0.41.13: UTF-16 safety in judgeSignificance ───────────────────── | COMMENT |
| MEDIUM | test/cycle-synthesize.test.ts | 421 | // ─── Head-boundary cases (offset around 4000) ────────────────────── | COMMENT |
| MEDIUM | test/cycle-synthesize.test.ts | 435 | // ─── Tail-boundary cases (offset around length-4000 = 4001) ──────── | COMMENT |
| MEDIUM | test/cycle-synthesize.test.ts | 450 | // ─── Sub-8000 short-content branch: no slicing, no risk ──────────── | COMMENT |
| 875 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.ci.yml | 1 | # docker-compose.ci.yml | COMMENT |
| LOW | bunfig.toml | 1 | [test] | COMMENT |
| LOW | test/migrate.test.ts | 61 | await engine.disconnect(); | COMMENT |
| LOW | test/migrate.test.ts | 121 | expect(v20!.handler).toBeUndefined(); | COMMENT |
| LOW | test/migrate.test.ts | 181 | COMMENT | |
| LOW | test/migrate.test.ts | 461 | // PGLite has no RLS engine and is intrinsically single-tenant. The 8 RLS | COMMENT |
| LOW | test/migrate.test.ts | 561 | // change that re-introduces the missing helper index. | COMMENT |
| LOW | test/migrate.test.ts | 921 | ); | COMMENT |
| LOW | test/migrate.test.ts | 1141 | describe('PR #356 — 57014 catch path emits actionable 4-part diagnostic', () => { | COMMENT |
| LOW | test/migrate.test.ts | 1241 | // setSessionDefaults still callable (no-op) so existing call sites | COMMENT |
| LOW | test/migrate.test.ts | 1801 | // | COMMENT |
| LOW | test/migrate.test.ts | 1981 | // Adds nullable `event_type TEXT` to facts so the typed-claim substrate | COMMENT |
| LOW | test/brain-registry.serial.test.ts | 261 | ]); | COMMENT |
| LOW | test/schema-pack-trust-boundary.test.ts | 1 | // v0.38 T8: schema_pack per-call trust gate (D13 + codex F4). | COMMENT |
| LOW | test/think-trajectory-injection.test.ts | 201 | COMMENT | |
| LOW | test/think-trajectory-injection.test.ts | 321 | // | COMMENT |
| LOW | test/resolvers.test.ts | 621 | }); | COMMENT |
| LOW | test/source-id-tx-regression.test.ts | 461 | ); | COMMENT |
| LOW | test/schema-cli.test.ts | 1 | // v0.38 Phase C: gbrain schema CLI smoke tests. | COMMENT |
| LOW | test/facts-fence-typed.test.ts | 1 | // v0.35.4 — typed-claim fence parser+renderer round-trip + normalization. | COMMENT |
| LOW | test/mcp-client.test.ts | 181 | const realServer = server; | COMMENT |
| LOW | test/benchmark-graph-quality.ts | 721 | seeds: SeededPage[], | COMMENT |
| LOW | test/doctor-embedding-env-override.test.ts | 1 | // v0.41.2.1 — embedding_env_override doctor check (D9 #9). | COMMENT |
| LOW | test/exit-classification.test.ts | 21 | }); | COMMENT |
| LOW | test/extract-atoms-page-discovery.test.ts | 1 | // v0.41.2.1 — page-based discovery + source-hash idempotency for | COMMENT |
| LOW | test/schema-pack-manifest-v041_2.test.ts | 1 | // v0.41 T3 — SchemaPackManifestSchema extensions: phases + calibration_domains. | COMMENT |
| LOW | test/loadConfig-merge.test.ts | 21 | COMMENT | |
| LOW | test/search-mode.test.ts | 381 | // v0.35.0.0+ bumped 1→2 to fold reranker fields into the cache key. | COMMENT |
| LOW | test/search-mode.test.ts | 401 | // archive/ demote (search-exclude policy change isn't in the hash, so the | COMMENT |
| LOW | test/doctor-sync-consolidation.test.ts | 1 | // v0.41.19.0 — T6 of ops-fix-wave. | COMMENT |
| LOW | test/by-mention.test.ts | 281 | // companies/apple slug exists. Wait — actually the ignore-list keys | COMMENT |
| LOW | test/connection-resilience.test.ts | 241 | expect(consecutiveFailures).toBeLessThan(3); | COMMENT |
| LOW | test/cycle-pglite-lock-ordering.serial.test.ts | 101 | mkdirSync(gbrainHome, { recursive: true }); | COMMENT |
| LOW | test/fix-wave-structural.test.ts | 81 | // v0.41.3 (T4 atomicity fix, codex F4): admin endpoint now validates | COMMENT |
| LOW | test/dream.test.ts | 241 | spy.mockRestore(); | COMMENT |
| LOW | test/lens-pack-manifests.test.ts | 1 | // v0.41 T4 — bundled lens pack manifest smoke tests. | COMMENT |
| LOW | test/reindex-preserve-tags.test.ts | 1 | // v0.41.37.0 #1621 — reindex / re-import must NOT wipe DB-side enrichment tags. | COMMENT |
| LOW | test/migrations-v0_13_1.test.ts | 41 | expect(v0_13_1.featurePitch.headline.length).toBeGreaterThan(10); | COMMENT |
| LOW | test/oauth.test.ts | 741 | COMMENT | |
| LOW | test/recall-extensions.test.ts | 261 | const n = await engine.countUnconsolidatedFacts('default'); | COMMENT |
| LOW | test/embedding-dim-check.test.ts | 21 | } from '../src/core/embedding-dim-check.ts'; | COMMENT |
| LOW | test/reindex.test.ts | 101 | COMMENT | |
| LOW | test/embed-multimodal-batching.test.ts | 1 | // Commit 0 (D4 + D22-2): batching + partial-failure for multimodal embed, | COMMENT |
| LOW | test/cycle-pack-gating.test.ts | 1 | // v0.41 T9 R-GATE — orchestrator-level pack gate for lens-pack phases. | COMMENT |
| LOW | test/extractable-spec-widening.test.ts | 1 | // v0.42 — ExtractableSpec widening parity tests. | COMMENT |
| LOW | test/doctor-minions-check.test.ts | 121 | if (minions) { | COMMENT |
| LOW | test/subagent-handler.test.ts | 341 | // the tool result synthesis happened when resuming, then model spoke). | COMMENT |
| LOW | test/v0_37_gap_fill.serial.test.ts | 321 | // ───────────────────────────────────────────────────────────────────── | COMMENT |
| LOW | test/pglite-engine-disconnect.serial.test.ts | 61 | const realClose = eng._db!.close.bind(eng._db!); | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 61 | // ON content_chunks(language) WHERE language IS NOT NULL`. | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 81 | // not directly forward-referenced by an index but the bootstrap adds it | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 101 | // v0.29.1 (v41) — sibling columns added in the same migration as | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 121 | // them before SCHEMA_SQL replay creates the FK + index. | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 141 | // are added defense-in-depth so future schema work that does reference | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 341 | COMMENT | |
| LOW | test/schema-bootstrap-coverage.test.ts | 581 | return result; | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 641 | }, 30000); | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 661 | // migration's SQL string is authored by us with consistent shape. The | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 681 | // migration but NOT (yet) referenced by `PGLITE_SCHEMA_SQL` (neither in a | COMMENT |
| LOW | test/schema-bootstrap-coverage.test.ts | 701 | 'facts.row_num', | COMMENT |
| 603 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | INSTALL_FOR_AGENTS.md | 6 | ## Step 0: If you are not Claude Code | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 17 | ## Step 1: Install GBrain | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 41 | ## Step 2: API Keys | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 57 | ## Step 3: Create the Brain | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 132 | ## Step 4: Import and Index | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 187 | ## Step 5: Load Skills | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 219 | ## Step 6: Identity (optional) | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 232 | ## Step 7: Recurring Jobs | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 247 | ## Step 8: Integrations | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 255 | ## Step 9: Verify | COMMENT |
| LOW | llms-full.txt | 996 | ## Step 0: If you are not Claude Code | COMMENT |
| LOW | llms-full.txt | 1007 | ## Step 1: Install GBrain | COMMENT |
| LOW | llms-full.txt | 1031 | ## Step 2: API Keys | COMMENT |
| LOW | llms-full.txt | 1047 | ## Step 3: Create the Brain | COMMENT |
| LOW | llms-full.txt | 1122 | ## Step 4: Import and Index | COMMENT |
| LOW | llms-full.txt | 1177 | ## Step 5: Load Skills | COMMENT |
| LOW | llms-full.txt | 1209 | ## Step 6: Identity (optional) | COMMENT |
| LOW | llms-full.txt | 1222 | ## Step 7: Recurring Jobs | COMMENT |
| LOW | llms-full.txt | 1237 | ## Step 8: Integrations | COMMENT |
| LOW | llms-full.txt | 1245 | ## Step 9: Verify | COMMENT |
| LOW | llms-full.txt | 2420 | ## Step 1: See what pack is active today | COMMENT |
| LOW | llms-full.txt | 2442 | ## Step 2: Fork the bundled pack | COMMENT |
| LOW | llms-full.txt | 2452 | ## Step 3: Activate the fork | COMMENT |
| LOW | llms-full.txt | 2464 | ## Step 4: Add a researcher type | COMMENT |
| LOW | llms-full.txt | 2489 | ## Step 5: Import some placeholder researcher pages | COMMENT |
| LOW | llms-full.txt | 2524 | ## Step 6: See the gap with `stats` | COMMENT |
| LOW | llms-full.txt | 2534 | ## Step 7: Backfill with `sync --apply` | COMMENT |
| LOW | llms-full.txt | 2570 | ## Step 8: Prove the wiring works | COMMENT |
| LOW⚡ | test/skill-brain-first.test.ts | 261 | test('matches ### Step 0: Brain Context', () => { | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 262 | expect(PHASE_HEADING_RE.test('### Step 0: Brain Context')).toBe(true); | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 427 | const content = `---\nname: good-skill\n---\n# Good Skill\n\n## Step 0: Brain Context\nSearch the brain first with \ | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 433 | const content = `---\nname: bad-skill\n---\n# Bad Skill\n\n## Step 1: Research\nUse web_search to find information a | CODE |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 115 | // Step 1: init --migrate-only seeds the schema. Pre-fix on PGLite this | COMMENT |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 121 | // Step 2: apply-migrations --yes runs the orchestrator chain. Pre-fix | COMMENT |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 143 | // Step 3: re-run is idempotent — "All migrations up to date" must exit | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 210 | // Step 1: page is visible by default. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 215 | // Step 2: soft-delete, default getPage returns null. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 220 | // Step 3: include_deleted: true surfaces the row with deleted_at populated. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 225 | // Step 4: restore → default getPage returns the row again. | COMMENT |
| LOW⚡ | test/doctor-cli-smoke.serial.test.ts | 87 | // Step 1: init + apply migrations so the brain is at head before doctor runs. | COMMENT |
| LOW⚡ | test/doctor-cli-smoke.serial.test.ts | 93 | // Step 2: doctor --json against the fresh brain. This is the load-bearing | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 47 | // Step 1: accept v1 cleanly. | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 78 | // Step 2: stage a pending v2 (simulates crash). | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 89 | // Step 3: resume — call revertAllPending (what runOptimizationLoop does). | COMMENT |
| LOW⚡ | test/skillopt/adversarial/partial-write-crash.test.ts | 92 | // Step 1: a clean accept. | COMMENT |
| LOW⚡ | test/skillopt/adversarial/partial-write-crash.test.ts | 98 | // Step 2: stage a pending v2 from a crashed run. | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 40 | // Step 1: Submit a slow job with a short timeout | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 46 | // Step 2: Submit a fast job that should run AFTER the slow one times out | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 75 | // Step 3: Start worker | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 78 | // Step 4: Wait for slow job timeout (200ms) + handler abort + fast job execution | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 81 | // Step 5: Stop worker | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 85 | // Step 6: Verify | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 466 | // Step 1: register a throwaway client via CLI. | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 479 | // Step 2: mint a token through the live server. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 492 | // Step 3: revoke via the CLI subprocess. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 502 | // Step 4: previously-minted token must now be rejected at /mcp. Cascade | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 512 | // Step 5: re-running revoke-client on the now-deleted id must exit 1. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 461 | // Step 1: First sync of the clean repo — should succeed. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 467 | // Step 2: Add a broken file — frontmatter slug doesn't match path-derived slug. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 477 | // Step 3: Sync should block. Bookmark must NOT advance. | COMMENT |
| 260 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/skill-brain-first.test.ts | 261 | test('matches ### Step 0: Brain Context', () => { | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 262 | expect(PHASE_HEADING_RE.test('### Step 0: Brain Context')).toBe(true); | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 427 | const content = `---\nname: good-skill\n---\n# Good Skill\n\n## Step 0: Brain Context\nSearch the brain first with \ | CODE |
| LOW⚡ | test/skill-brain-first.test.ts | 433 | const content = `---\nname: bad-skill\n---\n# Bad Skill\n\n## Step 1: Research\nUse web_search to find information a | CODE |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 115 | // Step 1: init --migrate-only seeds the schema. Pre-fix on PGLite this | COMMENT |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 121 | // Step 2: apply-migrations --yes runs the orchestrator chain. Pre-fix | COMMENT |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 143 | // Step 3: re-run is idempotent — "All migrations up to date" must exit | COMMENT |
| LOW⚡ | test/apply-migrations-pglite-spawn.serial.test.ts | 149 | // Step 4: --list exits 0 (third leg of the #1062 contract). | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 210 | // Step 1: page is visible by default. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 215 | // Step 2: soft-delete, default getPage returns null. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 220 | // Step 3: include_deleted: true surfaces the row with deleted_at populated. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 225 | // Step 4: restore → default getPage returns the row again. | COMMENT |
| LOW⚡ | test/doctor-cli-smoke.serial.test.ts | 87 | // Step 1: init + apply migrations so the brain is at head before doctor runs. | COMMENT |
| LOW⚡ | test/doctor-cli-smoke.serial.test.ts | 93 | // Step 2: doctor --json against the fresh brain. This is the load-bearing | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 47 | // Step 1: accept v1 cleanly. | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 78 | // Step 2: stage a pending v2 (simulates crash). | COMMENT |
| LOW | test/skillopt/adversarial/resume-after-crash.test.ts | 89 | // Step 3: resume — call revertAllPending (what runOptimizationLoop does). | COMMENT |
| LOW⚡ | test/skillopt/adversarial/partial-write-crash.test.ts | 92 | // Step 1: a clean accept. | COMMENT |
| LOW⚡ | test/skillopt/adversarial/partial-write-crash.test.ts | 98 | // Step 2: stage a pending v2 from a crashed run. | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 40 | // Step 1: Submit a slow job with a short timeout | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 46 | // Step 2: Submit a fast job that should run AFTER the slow one times out | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 75 | // Step 3: Start worker | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 78 | // Step 4: Wait for slow job timeout (200ms) + handler abort + fast job execution | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 81 | // Step 5: Stop worker | COMMENT |
| LOW⚡ | test/e2e/worker-abort-recovery.test.ts | 85 | // Step 6: Verify | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 466 | // Step 1: register a throwaway client via CLI. | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 479 | // Step 2: mint a token through the live server. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 492 | // Step 3: revoke via the CLI subprocess. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 502 | // Step 4: previously-minted token must now be rejected at /mcp. Cascade | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 512 | // Step 5: re-running revoke-client on the now-deleted id must exit 1. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 461 | // Step 1: First sync of the clean repo — should succeed. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 467 | // Step 2: Add a broken file — frontmatter slug doesn't match path-derived slug. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 477 | // Step 3: Sync should block. Bookmark must NOT advance. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 491 | // Step 4: Run with skipFailed — bookmark advances, entry gets acked. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 501 | // Step 5: Verify what doctor would render for the historical entry. | COMMENT |
| LOW | test/e2e/sync.test.ts | 516 | // Step 6: Add a second broken file — this one with a different failure code | COMMENT |
| LOW | test/e2e/sync.test.ts | 532 | // Step 7: Sync blocks again on the new failure. Old entry stays acked. | COMMENT |
| LOW | test/e2e/sync.test.ts | 546 | // Step 8: Skip again — both entries acked, summary aggregates the count. | COMMENT |
| LOW | test/e2e/eval-loop.test.ts | 153 | // Step 1: capture three search queries against the live brain. | COMMENT |
| LOW⚡ | test/e2e/eval-loop.test.ts | 165 | // Step 2: publish a baseline from the captured rows. | COMMENT |
| LOW⚡ | test/e2e/eval-loop.test.ts | 172 | // Step 3: gate against the baseline. Since the brain hasn't changed, | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 207 | // Step 3: snapshot. | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 216 | // Step 4: DELETE every rebuildable derived table. NOT tags — tags | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 227 | // Step 5: re-import all + re-extract. Re-import is what rebuilds | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 232 | // Step 6: snapshot + diff. | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 62 | # Step 1: build the legacy fixture (drop schema, init to LATEST, down-mutate) | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 73 | # Step 2: walk forward. `gbrain doctor` triggers engine.connect() which | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 88 | # Step 3: assert status is non-fatal. We accept 'ok' and 'warnings' because | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 54 | # Step 1: seed the synthetic brain. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 81 | # Step 2: init brain + register the source. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 109 | # Step 3: run gbrain doctor; capture wall-clock + exit + frontmatter_integrity status. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 120 | # Step 4: assert. | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 51 | # Step 1: ensure schema is up-to-date by running doctor once. Doctor exits | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 58 | # Step 2: create a tiny brain dir + register it as sync.repo_path so each sync | COMMENT |
| LOW | tests/heavy/sync_lock_regression.sh | 95 | # Step 3: spawn N parallel sync processes. Capture each one's exit code + | COMMENT |
| LOW | tests/heavy/sync_lock_regression.sh | 121 | # Step 4: collect outcomes | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 146 | # Step 5: assert no leaked gbrain_cycle_locks rows. The pkey column is `id`, | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 151 | # Step 6: verdict | COMMENT |
| LOW⚡ | tests/heavy/_build_legacy_fixtures.sh | 58 | # Step 1: reset schema | COMMENT |
| LOW⚡ | tests/heavy/_build_legacy_fixtures.sh | 62 | # Step 2: bring to LATEST via gbrain. The CLI's `doctor --json` triggers | COMMENT |
| 94 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/cycle-synthesize.test.ts | 397 | function scanForUnpairedSurrogates(s: string): { index: number; kind: 'lone-high' | 'lone-low' } | null { | CODE |
| LOW | test/benchmark-graph-quality.ts | 417 | async function measureBaselineRelational( | CODE |
| LOW | test/voyage-multimodal.test.ts | 33 | function configureVoyageMultimodal(env: Record<string, string | undefined> = {}) { | CODE |
| LOW | test/benchmark-knowledge-runtime.ts | 269 | async function runDoctorCompletenessBench(): Promise<{ | CODE |
| LOW | test/schema-bootstrap-coverage.test.ts | 456 | function parseIndexColumnReferences(sql: string): Array<{ table: string; column: string }> { | CODE |
| LOW | test/mcp-tool-defs.test.ts | 37 | function referenceParamDefToSchema(p: ParamDefLike): Record<string, unknown> { | CODE |
| LOW | test/e2e/migration-v47-notability.test.ts | 85 | async function readNotabilityColumnState(): Promise<{ | CODE |
| LOW | test/e2e/skill-brain-first.test.ts | 45 | function copyFixturesIntoTempWorkspace(): Workspace { | CODE |
| LOW | test/e2e/thin-client.test.ts | 128 | function parseRegisterClientOutput(out: string): { clientId: string; clientSecret: string } { | CODE |
| LOW⚡ | test/e2e/source-routing.test.ts | 166 | async function seedTwoSourcesWithSharedSymbol(engine: PGLiteEngine): Promise<void> { | CODE |
| LOW | test/helpers/extract-added-columns.ts | 53 | function extractAlterAddColumnsFromSql(sql: string): Array<{ table: string; column: string }> { | CODE |
| LOW | test/helpers/extract-added-columns.ts | 81 | export function extractAddedColumnsFromMigrations(): AddedColumnRef[] { | CODE |
| LOW | test/helpers/schema-diff.ts | 181 | export function formatIndexDiffForFailure(diff: IndexDiff): string { | CODE |
| LOW | test/helpers/cli-pty-runner.ts | 41 | export function isNumberedOptionListVisible(visible: string): boolean { | CODE |
| LOW | src/cli.ts | 669 | async function printIdentityBannerBestEffort( | CODE |
| LOW | src/core/doctor-remote.ts | 76 | export async function collectRemoteDoctorReport( | CODE |
| LOW | src/core/post-upgrade-reembed.ts | 131 | export async function runPostUpgradeReembedPrompt( | CODE |
| LOW | src/core/last-retrieved.ts | 72 | export async function awaitPendingLastRetrievedWrites( | CODE |
| LOW | src/core/destructive-guard.ts | 135 | export function checkDestructiveConfirmation( | CODE |
| LOW | src/core/takes-fence.ts | 191 | export function normalizeWeightForStorage( | CODE |
| LOW | src/core/thin-client-upgrade-prompt.ts | 275 | function defaultVerifyUpgradeAdvanced(remoteVersion: string): { advanced: boolean; newVersion: string | null } { | CODE |
| LOW | src/core/embedding-dim-check.ts | 93 | export async function readContentChunksEmbeddingDim(engine: BrainEngine): Promise<ColumnDimResult> { | CODE |
| LOW | src/core/embedding-dim-check.ts | 275 | export function resolveSchemaEmbeddingDim(opts: ResolveSchemaEmbeddingDimOpts): ResolveSchemaDimResult { | CODE |
| LOW | src/core/embedding-dim-check.ts | 308 | export function resolveSchemaMultimodalDim(opts: ResolveSchemaMultimodalDimOpts): ResolveSchemaDimResult { | CODE |
| LOW | src/core/embedding-dim-check.ts | 362 | function validateDimAgainstTouchpoint( | CODE |
| LOW | src/core/embedding-dim-check.ts | 408 | function isCustomDimValidForProvider( | CODE |
| LOW | src/core/embedding-dim-check.ts | 655 | export async function assertFactsEmbeddingDimMatchesConfig(engine: BrainEngine): Promise<void> { | CODE |
| LOW | src/core/source-resolver.ts | 201 | export function formatSoleNonDefaultNudge(sourceId: string): string | null { | CODE |
| LOW | src/core/migrate.ts | 5556 | async function checkForBlockingConnections(engine: BrainEngine): Promise<boolean> { | CODE |
| LOW | src/core/cli-force-exit.ts | 125 | export function computeTeardownDeadlineMs(opts: { | CODE |
| LOW | src/core/brain-writer.ts | 81 | export function makeFrontmatterBackupRunId(date = new Date()): string { | CODE |
| LOW | src/core/brain-writer.ts | 95 | export function defaultFrontmatterBackupRoot(runId = makeFrontmatterBackupRunId()): string { | CODE |
| LOW | src/core/audit-quality-probe.ts | 45 | export function computeQualityProbeAuditFilename(now: Date = new Date()): string { | CODE |
| LOW | src/core/audit-quality-probe.ts | 91 | export function readRecentQualityProbeEvents( | CODE |
| LOW | src/core/audit-synopsis.ts | 76 | export function computeSynopsisAuditFilename(now: Date = new Date()): string { | CODE |
| LOW | src/core/audit-synopsis.ts | 135 | export function readRecentSynopsisFailures( | CODE |
| LOW | src/core/audit-synopsis.ts | 180 | export function summarizeSynopsisFailures( | CODE |
| LOW | src/core/background-work.ts | 63 | export function registerBackgroundWorkDrainer(d: BackgroundWorkDrainer): void { | CODE |
| LOW | src/core/background-work.ts | 103 | export async function drainAllBackgroundWorkForCliExit(opts?: { timeoutMs?: number }): Promise<void> { | CODE |
| LOW | src/core/archive-crawler-config.ts | 154 | export function normalizeAndValidateArchiveCrawlerConfig( | CODE |
| LOW | src/core/rerank-audit.ts | 61 | export function computeRerankAuditFilename(now: Date = new Date()): string { | CODE |
| LOW | src/core/oauth-provider.ts | 105 | export function validateTokenEndpointAuthMethod(value: unknown): TokenEndpointAuthMethod { | CODE |
| LOW | src/core/ssrf-validate.ts | 81 | export async function validateAndResolveUrl(urlStr: string): Promise<ResolvedTarget> { | CODE |
| LOW | src/core/markdown.ts | 532 | export function inferTypeAndSubtypeFromPack( | CODE |
| LOW | src/core/guardrails.ts | 82 | export function registerGuardrailProvider(provider: GuardrailProvider): void { | CODE |
| LOW | src/core/guardrails.ts | 88 | export function unregisterGuardrailProvider(id: string): boolean { | CODE |
| LOW | src/core/sources-ops.ts | 532 | export async function resolveScopedSourceOrThrow( | CODE |
| LOW | src/core/vector-index.ts | 32 | export function applyChunkEmbeddingIndexPolicy(sql: string, dims: number): string { | CODE |
| LOW | src/core/vector-index.ts | 243 | export function isSupabaseAutoMaintenance(active: ActiveBuildInfo): boolean { | CODE |
| LOW | src/core/contextual-retrieval-resolver.ts | 71 | export function resolveContextualRetrievalMode( | CODE |
| LOW | src/core/retrieval-upgrade-prompt.ts | 62 | export async function runRetrievalUpgradePrompt( | CODE |
| LOW | src/core/pglite-engine.ts | 119 | export function computeSnapshotSchemaHash( | CODE |
| LOW | src/core/pglite-engine.ts | 179 | export function buildPgliteInitErrorMessage( | CODE |
| LOW | src/core/contextual-retrieval-service.ts | 209 | export async function reembedPageWithContextualRetrieval( | CODE |
| LOW⚡ | src/core/contextual-retrieval-service.ts | 523 | function readSourceTextWithFallback(page: Page, chunks: ChunkInput[]): string { | CODE |
| LOW | src/core/contextual-retrieval-service.ts | 579 | export function expectedModeForPageSourceOnly(args: { | CODE |
| LOW | src/core/context-engine.ts | 624 | export function createGBrainContextEngine(ctx: { | CODE |
| LOW | src/core/remediation-checkpoint.ts | 60 | export function saveRemediationCheckpoint(cp: RemediationCheckpoint): void { | CODE |
| LOW | src/core/remediation-checkpoint.ts | 74 | export function loadRemediationCheckpoint(planHash: string): RemediationCheckpoint | null { | CODE |
| LOW | src/core/remediation-checkpoint.ts | 92 | export function listRemediationCheckpoints(): Array<{ plan_hash: string; mtime: number }> { | CODE |
| 202 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | llms-full.txt | 3167 | # Scaling skills past 300 without drowning the context window | COMMENT |
| MEDIUM | TODOS.md | 1639 | three real wins in PR #1316 (`chipoto69` — "Phase 4 multi-agent hardening") | CODE |
| MEDIUM | TODOS.md | 2492 | ## v0.37.4.0 pgGraph CI scaffolding follow-ups (v0.37.x+) | COMMENT |
| MEDIUM | test/skillpack-reference-apply.test.ts | 90 | // bundle. Without scaffold-time base tracking, we cannot tell | COMMENT |
| MEDIUM | test/skillpack-reference-apply.test.ts | 134 | // Don't scaffold — leave target missing. | COMMENT |
| MEDIUM | test/skillify-scaffold.test.ts | 188 | // to scaffold. The plan must NOT queue a duplicate append, even | COMMENT |
| MEDIUM | test/skillify-scaffold.test.ts | 427 | // cross-modal eval. No `gbrain skillify scaffold demo-eleven` shell-out | COMMENT |
| MEDIUM | test/skillify-scaffold.test.ts | 449 | // Receipts naming convention is documented in the scaffold so the | COMMENT |
| MEDIUM | test/skillify-scaffold.test.ts | 453 | // Pass criterion is documented in the scaffold (Q2 floor + Q3 floor). | COMMENT |
| MEDIUM | test/sync-failure-ledger.serial.test.ts | 263 | describe('#5 + #6 applySyncFailureGate orchestration', () => { | CODE |
| MEDIUM | test/repo-root.test.ts | 317 | // skillify scaffold, post-install-advisory). If a future edit adds the | COMMENT |
| MEDIUM | test/skillpack-scaffold.test.ts | 180 | // First, scaffold without the paired source declared (simulating "skill | COMMENT |
| MEDIUM | test/skillpack-scaffold.test.ts | 187 | // Now scaffold (gbrain bundle has the paired source declared); the | COMMENT |
| MEDIUM | test/eval-v041_2-scaffolds.test.ts | 1 | // v0.41 T11 — minimal scaffold tests for the 3 new eval commands. | COMMENT |
| MEDIUM | test/schema-pack/scaffold-extractable.test.ts | 1 | // v0.42 Wave C1 — scaffold-extractable mutation tests. | COMMENT |
| MEDIUM | test/schema-pack/scaffold-extractable.test.ts | 6 | // at test/e2e/schema-scaffold-extractable.test.ts because it needs | COMMENT |
| MEDIUM | test/extract/benchmark.test.ts | 112 | // user gets the scaffold-extractable hint, not a path error. | COMMENT |
| MEDIUM | test/e2e/skillpack-flow.test.ts | 117 | // Run scaffold from gbrainRoot so it picks up our scratch bundle. | COMMENT |
| MEDIUM | docs/skillpack-anatomy.md | 18 | │ └── bootstrap.md # post-scaffold display (NOT an executor) | CODE |
| MEDIUM | docs/skillpack-anatomy.md | 96 | gbrain skillpack init my-pack # scaffold the tree | CODE |
| MEDIUM | docs/skillpack-anatomy.md | 98 | gbrain skillpack doctor my-pack --fix --yes # auto-scaffold missing pieces | CODE |
| MEDIUM | docs/GBRAIN_RECOMMENDED_SCHEMA.md | 914 | ## What makes this different from RAG | COMMENT |
| MEDIUM | docs/designs/SKILLPACK_REGISTRY_V1_SPEC.md | 883 | gbrain skillpack init <name> # NEW: scaffold publisher repo | CODE |
| MEDIUM | docs/designs/KNOWLEDGE_RUNTIME.md | 414 | ### 6.1 The anti-hallucination invariant | COMMENT |
| MEDIUM | docs/designs/KNOWLEDGE_RUNTIME.md | 458 | // src/core/output/scaffold.ts | COMMENT |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 149 | - `src/core/skillpack/{manifest-v1,tarball,state,remote-source,trust-prompt,bootstrap-display,scaffold-third-party,regis | CODE |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 152 | - `src/core/skillpack/{init-brain-pack,brain-pack-advisory,brain-pack-lint,brain-resident-locate,nag-state}.ts` (#2180) | CODE |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 153 | - `src/core/advisor/{types,run,render,recommended-set,history,apply,collect-*}.ts` + `src/commands/advisor.ts` (#2180) — | CODE |
| MEDIUM | docs/architecture/schema-packs.md | 57 | gbrain schema init <name> # scaffold a stub pack (experimental) | CODE |
| MEDIUM | docs/architecture/topologies.md | 269 | ### Recommended embedding model | COMMENT |
| MEDIUM | docs/guides/skillpacks-as-scaffolding.md | 1 | # Skillpacks as scaffolding, not amber | COMMENT |
| MEDIUM | docs/guides/skillpacks-as-scaffolding.md | 31 | ### `gbrain skillpack scaffold <name> [--workspace PATH]` | COMMENT |
| MEDIUM | docs/guides/skillpacks-as-scaffolding.md | 185 | # shared deps that scaffold drops in: | COMMENT |
| MEDIUM | docs/guides/scaling-skills.md | 1 | # Scaling skills past 300 without drowning the context window | COMMENT |
| MEDIUM⚡ | docs/guides/meeting-ingestion.md | 14 | # AI summaries hallucinate framing ("it was agreed that...") | COMMENT |
| MEDIUM | docs/guides/multi-source-brains.md | 180 | # Remove the durability scaffolding (also runs automatically on `sources remove`): | COMMENT |
| MEDIUM | examples/skillpack-reference/README.md | 42 | │ └── bootstrap.md # post-scaffold display (no executor) | CODE |
| MEDIUM | scripts/check-batch-audit-site.sh | 50 | # allowed to use synthetic sites for assertion scaffolding). | COMMENT |
| MEDIUM | scripts/build-skillpack-anatomy.ts | 75 | │ └── bootstrap.md # post-scaffold display (NOT an executor) | CODE |
| MEDIUM | scripts/build-skillpack-anatomy.ts | 131 | gbrain skillpack init my-pack # scaffold the tree | CODE |
| MEDIUM | scripts/build-skillpack-anatomy.ts | 133 | gbrain skillpack doctor my-pack --fix --yes # auto-scaffold missing pieces | CODE |
| MEDIUM | skills/skillify/SKILL.md | 179 | ### Cycles + cost guardrails | COMMENT |
| MEDIUM | src/cli.ts | 1183 | // args[0] is the subcommand (scaffold|check). | COMMENT |
| MEDIUM | src/core/check-resolvable.ts | 589 | // `gbrain skillify scaffold`. Presence means a scaffolded skill | COMMENT |
| MEDIUM | src/core/repo-root.ts | 156 | // && gbrain skillpack scaffold X` finds the agent repo, not an | COMMENT |
| MEDIUM | src/core/import-file.ts | 327 | // ingest. No-op when zero guardrails are registered (OSS default). | COMMENT |
| MEDIUM | src/core/cycle/drift.ts | 143 | // v0.28 scaffold: write a candidate report. v0.29 wires LLM-driven weight | COMMENT |
| MEDIUM | src/core/skillpack/scaffold-third-party.ts | 149 | // 5. Enumerate scaffold entries (every file under skills/<slug>/ + paired | COMMENT |
| MEDIUM | src/core/skillpack/scaffold-third-party.ts | 156 | skillSlug: undefined, // third-party scaffold lands the whole pack | CODE |
| MEDIUM | src/core/skillpack/scaffold.ts | 119 | // symlink check or path confinement (the scaffold source is gbrain's | COMMENT |
| MEDIUM | src/core/skillpack/scaffold.ts | 147 | // { walkSourceDir } from 'scaffold.ts'` if they prefer one entry point. | COMMENT |
| MEDIUM⚡ | src/core/skillpack/post-install-advisory.ts | 88 | // #8: `skillpack install` was removed — scaffold is canonical. The shared | COMMENT |
| MEDIUM⚡ | src/core/skillpack/post-install-advisory.ts | 88 | // #8: `skillpack install` was removed — scaffold is canonical. The shared | COMMENT |
| MEDIUM⚡ | src/core/skillpack/post-install-advisory.ts | 89 | // renderer emits scaffold commands so this surface and `gbrain advisor` agree. | COMMENT |
| MEDIUM | src/core/skillpack/migrate-fence.ts | 262 | // Copy any missing skills additively (uses scaffold's underlying | COMMENT |
| MEDIUM | src/core/skillpack/bundle.ts | 319 | // The bundler reads this on every enumerate; scaffold copies the paired | COMMENT |
| MEDIUM | src/core/skillpack/rubric.ts | 219 | 'Create CHANGELOG.md with at least a `## [<version>] - <YYYY-MM-DD>` entry for the current version. `gbrain | CODE |
| MEDIUM | src/core/schema-pack/scaffold-extractable.ts | 269 | // is the canonical gbrain scaffold posture (matches schema init, | COMMENT |
| MEDIUM | src/core/schema-pack/scaffold-extractable.ts | 270 | // skillpack scaffold, etc). | COMMENT |
| MEDIUM | src/core/distribution/index.ts | 20 | // remote-source,registry-schema,scaffold-third-party}.ts`. It must | COMMENT |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/extract-by-mention.test.ts | 91 | await engine.putPage('companies/acme', { type: 'company', title: 'Acme Corp', compiled_truth: 'acme body', timeline: ' | CODE |
| LOW | test/publish.test.ts | 89 | expect(extractTitle('# Jane Doe\n\nContent.')).toBe('Jane Doe'); | CODE |
| LOW | test/longmemeval-intent.test.ts | 17 | question: opts.question ?? 'placeholder', | CODE |
| LOW | test/longmemeval-intent.test.ts | 18 | answer: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 60 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 70 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 81 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 136 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 191 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 200 | compiled_truth: 'placeholder', | CODE |
| LOW | test/bench-publish.test.ts | 36 | const input = [makeInput('hello world'), makeInput('lorem ipsum')]; | CODE |
| LOW | test/eval-contradictions-fixture-redact.test.ts | 116 | expect(out).not.toContain('foo@bar.com'); | CODE |
| LOW | test/resolvers.test.ts | 426 | process.env.X_API_BEARER_TOKEN = 'fake-token'; | CODE |
| LOW | test/resolvers.test.ts | 431 | const ctx = makeCtx({ config: { x_api_bearer_token: 'fake-token' } }); | CODE |
| LOW | test/extract-by-mention-resume.test.ts | 63 | await engine.putPage('companies/acme', { type: 'company', title: 'Acme Corp', compiled_truth: 'acme body', timeline: ' | CODE |
| LOW | test/schema-pack-registry-reload.test.ts | 145 | writeFileSync(packPath, 'placeholder', 'utf-8'); | CODE |
| LOW | test/backlinks.test.ts | 14 | expect(refs[0].name).toBe('Jane Doe'); | CODE |
| LOW | test/backlinks.test.ts | 23 | expect(refs[0].name).toBe('Acme Corp'); | CODE |
| LOW | test/backlinks.test.ts | 47 | expect(extractPageTitle('---\ntitle: "Jane Doe"\ntype: person\n---\n# Jane')).toBe('Jane Doe'); | CODE |
| LOW | test/backlinks.test.ts | 51 | expect(extractPageTitle('---\ntype: person\n---\n# Jane Doe')).toBe('Jane Doe'); | CODE |
| LOW | test/frontmatter-inference.test.ts | 138 | expect(result.title).toBe('John Doe'); | CODE |
| LOW | test/sync.test.ts | 300 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/sync.test.ts | 716 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/by-mention.test.ts | 10 | * 2. Multi-word phrase pass ("Acme Corp" matches "Acme Corp" not "Acme") | COMMENT |
| LOW | test/by-mention.test.ts | 100 | test('2. multi-word phrase pass — "Acme Corp" matches multi-word, not single', () => { | CODE |
| LOW | test/by-mention.test.ts | 103 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/by-mention.test.ts | 194 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/by-mention.test.ts | 202 | // Second occurrence of "Acme": multi-word "Acme Corp" matches → multi-word wins. | COMMENT |
| LOW | test/by-mention.test.ts | 213 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/performfullsync-source-id.test.ts | 72 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/routing-eval-cli.test.ts | 9 | * 1. Passing --llm emits a stderr notice ("placeholder" / "structural | COMMENT |
| LOW | test/routing-eval-cli.test.ts | 64 | const WARNING_NEEDLE = 'placeholder'; | CODE |
| LOW | test/orphans.test.ts | 155 | { slug: 'companies/acme', title: 'Acme Corp', domain: 'companies' }, | CODE |
| LOW | test/orphans.test.ts | 184 | { slug: 'companies/acme', title: 'Acme Corp', domain: 'companies' }, | CODE |
| LOW | test/orphans.test.ts | 188 | expect(out).toContain('Acme Corp'); | CODE |
| LOW | test/sync-resumable-import.serial.test.ts | 42 | execSync('git config user.email "test@test.com"', { cwd: repo, stdio: 'pipe' }); | CODE |
| LOW | test/sync-metafile-skip.serial.test.ts | 32 | execSync('git config user.email "test@test.com"', { cwd: repo, stdio: 'pipe' }); | CODE |
| LOW | test/sync-parallel.test.ts | 30 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/v0_37_gap_fill.serial.test.ts | 382 | writeFileSync(join(dotgbrain, 'brain.pglite', 'placeholder'), 'stub'); | CODE |
| LOW | test/longmemeval-trajectory-routing.test.ts | 41 | answer: 'placeholder', | CODE |
| LOW | test/longmemeval-trajectory-routing.test.ts | 54 | answer: 'placeholder', | CODE |
| LOW | test/enrichment-service.test.ts | 7 | expect(slugifyEntity('Jane Doe', 'person')).toBe('people/jane-doe'); | CODE |
| LOW | test/enrichment-service.test.ts | 11 | expect(slugifyEntity('Acme Corp', 'company')).toBe('companies/acme-corp'); | CODE |
| LOW | test/enrichment-service.test.ts | 33 | expect(entityPagePath('Jane Doe', 'person')).toBe(slugifyEntity('Jane Doe', 'person')); | CODE |
| LOW | test/enrichment-service.test.ts | 56 | const jane = entities.find(e => e.name === 'Jane Doe'); | CODE |
| LOW | test/connect.test.ts | 156 | expect(resolveToken({ tokenFlag: null, env: null, mode: 'print' })).toEqual({ kind: 'placeholder' }); | CODE |
| LOW | test/bench/baseline-file.test.ts | 54 | const rows = [makeRow('hello world', 0), makeRow('lorem ipsum', 1)]; | CODE |
| LOW | test/bench/baseline-file.test.ts | 63 | expect(parsed.rows.map(r => r.query).sort()).toEqual(['hello world', 'lorem ipsum']); | CODE |
| LOW | test/ai/recipe-azure-openai.test.ts | 28 | AZURE_OPENAI_API_KEY: 'az-fake-key', | CODE |
| LOW | test/ai/recipe-azure-openai.test.ts | 63 | const auth = r.resolveAuth!({ AZURE_OPENAI_API_KEY: 'az-fake-key' }); | CODE |
| LOW | test/ai/recipe-azure-openai.test.ts | 65 | expect(auth.token).toBe('az-fake-key'); | CODE |
| LOW | test/ai/recipe-azure-openai.test.ts | 78 | expect(result.headers).toEqual({ 'api-key': 'az-fake-key' }); | CODE |
| LOW | test/ai/recipes-existing-regression.test.ts | 87 | const auth = defaultResolveAuth(ollama!, { OLLAMA_API_KEY: 'fake-token' }, 'embedding'); | CODE |
| LOW | test/ai/recipes-existing-regression.test.ts | 89 | expect(auth.token).toBe('Bearer fake-token'); | CODE |
| LOW | test/ai/recipes-existing-regression.test.ts | 164 | const env = { FAKE_AZURE_API_KEY: 'fake-key' }; | CODE |
| LOW | test/ai/recipes-existing-regression.test.ts | 167 | expect(auth.headers).toEqual({ 'api-key': 'fake-key' }); | CODE |
| LOW | test/e2e/sync.test.ts | 32 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/e2e/sync.test.ts | 433 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/e2e/sync-parallel.test.ts | 33 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/e2e/contextual-retrieval-pglite.test.ts | 57 | env: { OPENAI_API_KEY: 'sk-test-fake-key-for-stub' }, | CODE |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/eval-chronicle.test.ts | 2 | * v0.42.x — Life Chronicle (#2390) feature eval harness (Phase A.9, PRIMARY proof). | COMMENT |
| MEDIUM | test/sources.test.ts | 30 | // Match by substring so tests are robust against whitespace. | COMMENT |
| MEDIUM | test/hybrid-search-lite.serial.test.ts | 127 | // is robust to the fixture’s actual chunking. | COMMENT |
| MEDIUM | test/sum-stale-chunk-chars.test.ts | 94 | // depend on gateway-configured dimensions (keeps it robust regardless of | COMMENT |
| MEDIUM | test/sum-stale-chunk-chars.test.ts | 98 | // in atttypmod) so the test is robust to whatever dim initSchema chose. | COMMENT |
| MEDIUM | test/migration-v120.test.ts | 39 | // string so the assertion is robust to driver array shape. | COMMENT |
| MEDIUM | scripts/check-fuzz-purity.sh | 87 | # A fuzz harness that pulls in `engine.ts` could trigger DB connections through | COMMENT |
| LOW | scripts/run-e2e.sh | 77 | # GBRAIN_HOME (just set above for HOME isolation); everything else GBRAIN_* is | COMMENT |
| LOW | scripts/import-from-upstream.sh | 171 | # subordinate script. For v0, just call the guard against the destination | COMMENT |
| MEDIUM | src/core/source-resolver.ts | 137 | // to tier 6 rather than throwing. Resolver stays robust to bad config. | COMMENT |
| MEDIUM | src/commands/eval-schema-authoring.ts | 3 | // Codex finding #9 honored: this harness's pass-criterion measures | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | test/e2e/code-indexing.test.ts | 86 | print(f"started {self.config['name']}") | CODE |
| HIGH⚡ | test/e2e/code-indexing.test.ts | 90 | print(f"stopped {self.config.get('name', 'anon')}") | CODE |
| HIGH⚡ | test/e2e/code-indexing.test.ts | 93 | if not key: return None | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/heavy/pg_upgrade_matrix.sh | 29 | # Usage: | COMMENT |
| LOW | tests/heavy/_build_legacy_fixtures.sh | 11 | # Usage: | COMMENT |
| LOW | tests/heavy/measure_rss.sh | 13 | # Usage: | COMMENT |
| LOW | tests/heavy/read_latency_under_sync.sh | 13 | # Usage: | COMMENT |
| LOW | tests/heavy/sync_timeout_rescue.sh | 39 | # Usage: | COMMENT |
| LOW | scripts/check-proposal-pii.sh | 24 | # Usage: | COMMENT |
| LOW | scripts/run-unit-parallel.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/fix-v0.11.0.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/check-key-files-current-state.sh | 22 | # Usage: | COMMENT |
| LOW | scripts/run-heavy.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/ci-cache-hash.sh | 45 | # Usage: | COMMENT |
| LOW | scripts/run-verify-parallel.sh | 11 | # Usage: | COMMENT |
| LOW | scripts/import-from-upstream.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/profile-tests.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/check-privacy.sh | 16 | # Usage: | COMMENT |
| LOW | scripts/smoke-test.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/sync-sole-non-default-routing.test.ts | 159 | // Pages went to 'default' as requested. | COMMENT |
| HIGH | test/retrieval-upgrade-planner.test.ts | 327 | // Resume path also calls runSchemaTransition. Mark as requested so the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/core/cycle/extract-atoms.ts | 129 | - Stand alone (no "as discussed above") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/core/skillify/templates.ts | 134 | // TODO: implement. This stub is detected by \`gbrain check-resolvable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/edge-extractor.test.ts | 49 | def helper(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check-skill-brain-first.sh | 56 | except Exception: | CODE |