Garry's Opinionated OpenClaw/Hermes Agent Brain
This report presents the forensic synthetic code analysis of garrytan/gbrain, a TypeScript project with 29,242 GitHub stars. SynthScan v2.0 examined 1,008,883 lines of code across 3959 source files, recording 4348 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 8.3 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 4348 distinct pattern matches across 16 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/google-source-reconcile.test.ts | 71 | // ── Thread / message id constants (hex only) ──────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 77 | // ── Fake Google API behind fetchImpl ───────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 223 | // ── In-memory vault ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 280 | // ── Shared setup helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 377 | // ── --full reconcile ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 482 | // ── Backfill floor freeze ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 539 | // ── 404-vanished threads ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 606 | // ── syncToken 410 recovery (calendar + contacts) ───────────────────────────── | COMMENT |
| MEDIUM | test/google-source-reconcile.test.ts | 680 | // ── loops_extract enqueue cap ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/operations-source-isolation-matrix.test.ts | 101 | // ─── The matrix ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/operations-source-isolation-matrix.test.ts | 210 | // ─── Fixture ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/operations-source-isolation-matrix.test.ts | 308 | // ─── Ratchet: the table covers the registry exactly ─────────────────────── | COMMENT |
| MEDIUM | test/operations-source-isolation-matrix.test.ts | 321 | // ─── The walk ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 50 | // ── Synthetic fixtures (never real tokens/emails) ──────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 80 | // ── The fake relay server (the conformance target) ─────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 106 | // ── POST /api/oauth/relay/sessions — create a consent session ──────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 162 | // ── POST /api/oauth/relay/refresh — server-side token refresh ──────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 204 | // ── relayUrl ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 223 | // ── createSession ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 251 | // ── pollClaim ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/creds-relay-client.test.ts | 415 | // ── refreshViaRelay ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 71 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 73 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 81 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 130 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 132 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 133 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/migrate.test.ts | 135 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 307 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 309 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 380 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 382 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 478 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 480 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 609 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 611 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 829 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 834 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 914 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 921 | // ──────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1159 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1161 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1205 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1207 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1669 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1672 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1749 | // ─── v0.37.2.0 — v80 takes_unresolvable_quality_v0_37_2_0 ────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 1935 | // ─── v0.38.0.0 — v81 pages_provenance_columns ───────────────────────────── | COMMENT |
| MEDIUM | test/migrate.test.ts | 2114 | // ─── v0.40.2.0 — v89 facts_event_type_column ─────────────────────────────── | COMMENT |
| MEDIUM | test/all-sources-sentinel.test.ts | 59 | // ── Resolver tiers pass the sentinel through verbatim ────────────────── | COMMENT |
| MEDIUM | test/all-sources-sentinel.test.ts | 100 | // ── sourceScopeOpts — the single read-scope choke point ───────────────── | COMMENT |
| MEDIUM | test/all-sources-sentinel.test.ts | 129 | // ── Never narrower than passing no flag (#2561 regression shape) ──────── | COMMENT |
| MEDIUM | test/all-sources-sentinel.test.ts | 129 | // ── Never narrower than passing no flag (#2561 regression shape) ──────── | COMMENT |
| MEDIUM | test/all-sources-sentinel.test.ts | 193 | // ── makeContext — explicit --source failures error loudly ─────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 282 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 287 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 358 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 364 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 456 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/embed-stale.serial.test.ts | 461 | // ──────────────────────────────────────────────────────────────── | COMMENT |
| 1616 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 | bunfig.toml | 21 | # | COMMENT |
| LOW | bunfig.toml | 41 | # | COMMENT |
| LOW | test/sources-abs-path-3696.test.ts | 101 | describe('#3696 residual — a relative --clone-dir is absolutized before use', () => { | COMMENT |
| LOW | test/migrate.test.ts | 61 | // Don't call initSchema. Probe against an empty PGlite — getConfig should | COMMENT |
| LOW | test/migrate.test.ts | 121 | // accidentally re-expanding v16's scope. | COMMENT |
| LOW | test/migrate.test.ts | 181 | for (const line of addColumnLines) { | COMMENT |
| LOW | test/migrate.test.ts | 381 | // v0.18.1 RLS hardening — structural guard for migration v24 | COMMENT |
| LOW | test/migrate.test.ts | 601 | return ((m?.sqlFor as any)?.postgres ?? m?.sql ?? '') as string; | COMMENT |
| LOW | test/migrate.test.ts | 1061 | // | COMMENT |
| LOW | test/migrate.test.ts | 1381 | // Critically: no SET idle_in_transaction in source — startup parameters | COMMENT |
| LOW | test/migrate.test.ts | 2121 | // Renumbered v81 → v82 → v89 across two successive master merges: | COMMENT |
| LOW | test/brain-registry.serial.test.ts | 261 | const reg = new BrainRegistry([ | COMMENT |
| LOW | test/facts-backstop-gating.test.ts | 21 | await engine.initSchema(); | COMMENT |
| LOW | test/onboard-phantom-rec-gates.test.ts | 1 | // test/onboard-phantom-rec-gates.test.ts | COMMENT |
| LOW | test/onboard-phantom-rec-gates.test.ts | 21 | // `gbrain-base` applies — and gbrain-base DOES declare four inference.regex | COMMENT |
| LOW | test/config-db-plane-round-trips.test.ts | 1 | // Regression: loadConfigWithEngine() read every DB-plane key one at a time. | COMMENT |
| LOW | test/openclaw-plugin-manifest.test.ts | 61 | it('every RECOMMENDED skill is bundled (recommended-but-unscaffoldable is a broken funnel)', () => { | 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 | const userMsg = captured[0].user; | COMMENT |
| LOW | test/resolvers.test.ts | 621 | }); | COMMENT |
| LOW | test/source-id-tx-regression.test.ts | 481 | expect(rows[0].slug).toBe(REN_TO_2); | COMMENT |
| LOW | test/schema-cli.test.ts | 1 | // v0.38 Phase C: gbrain schema CLI smoke tests. | COMMENT |
| LOW | test/brain-score-recommendations.test.ts | 61 | expect(HOSTED_EMBED_KEY_CONFIG.OPENAI_API_KEY).toBe('openai_api_key'); | COMMENT |
| LOW | test/facts-fence-typed.test.ts | 1 | // v0.35.4 — typed-claim fence parser+renderer round-trip + normalization. | COMMENT |
| LOW | test/init-picker-pty.serial.test.ts | 41 | const CLI_TS = join(REPO_ROOT, 'src', 'cli.ts'); | COMMENT |
| LOW | test/doctor-hidden-by-search-policy.test.ts | 61 | beforeAll(async () => { | COMMENT |
| LOW | test/sources-ops.test.ts | 1061 | const missingDir = join(SANDBOX, 'does-not-exist-yet'); | COMMENT |
| LOW | test/cycle-synthesize.test.ts | 541 | expect(prompt.length).toBeLessThan(30_000); | COMMENT |
| LOW | test/pglite-repair-command.serial.test.ts | 421 | test('uses the shared confirm-prompt helper, not a local reimplementation', () => { | COMMENT |
| LOW | test/check-resolvable-cli.test.ts | 141 | COMMENT | |
| LOW | test/mcp-client.test.ts | 181 | const realServer = server; | COMMENT |
| LOW | test/doctor-embedding-env-override.test.ts | 1 | // v0.41.2.1 — embedding_env_override doctor check (D9 #9). | 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/pglite-engine.test.ts | 1501 | // ───────────────────────────────────────────────────────────────── | COMMENT |
| LOW | test/minions.test.ts | 2161 | const b1 = await queue.add('srcsync2', { source_id: 'src-b' }, { maxWaiting: 1 }); | COMMENT |
| LOW | test/sync-sole-non-default-routing.test.ts | 161 | COMMENT | |
| LOW | test/fence-extraction.test.ts | 161 | expect(fenceChunks.length).toBeGreaterThan(0); | COMMENT |
| LOW | test/operations-trust-boundary.test.ts | 201 | COMMENT | |
| LOW | test/operations-trust-boundary.test.ts | 461 | }); | COMMENT |
| LOW | test/operations-trust-boundary.test.ts | 481 | // (fs import serving one localOnly op alongside safe remote ops) is | COMMENT |
| LOW | test/privacy-strip-and-forget.test.ts | 141 | // stripped compiled_truth. A `## Facts` fence written below the | COMMENT |
| LOW | test/doctor-pglite-scratch-probe.test.ts | 1 | // #2674 — pglite_scratch_probe: distinguish a damaged PGLite store from a | COMMENT |
| LOW | test/doctor-pglite-scratch-probe.test.ts | 21 | // store: engine=null also covers locks and config refusals. | COMMENT |
| LOW | test/search-mode.test.ts | 401 | // v0.40.4 (salem) + v0.39 T21 (master): bumped 3→4 to fold graph_signals | COMMENT |
| LOW | test/search-mode.test.ts | 421 | // must not be served to post-fix lookups. | COMMENT |
| LOW | test/search-mode.test.ts | 441 | // mw2: 21→22 — #1663 exact-lookup injection + #3995 relational slot + | COMMENT |
| LOW | test/search-mode.test.ts | 461 | const unset = knobsHash(knobs); | 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 | 381 | }); | COMMENT |
| LOW | test/by-mention.test.ts | 581 | COMMENT | |
| LOW | test/by-mention.test.ts | 621 | // suppression: seed no entity with title="Apple" — duh, then there's | COMMENT |
| LOW | test/envelope-to-gbrain.test.ts | 521 | }); | COMMENT |
| LOW | test/envelope-to-gbrain.test.ts | 1661 | } | COMMENT |
| LOW | test/envelope-to-gbrain.test.ts | 1741 | const { kept } = await survivor(collidingPair( | COMMENT |
| LOW | test/envelope-to-gbrain.test.ts | 1781 | // is therefore added after the calendar round trip rather than before it, so | COMMENT |
| LOW | test/envelope-to-gbrain.test.ts | 1841 | expect(stderr).toContain('"c-dup" is not unique'); | COMMENT |
| 1163 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | INSTALL_FOR_AGENTS.md | 11 | ## Step 0: If you are not Claude Code | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 22 | ## Step 1: Install GBrain | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 63 | ## Step 2: API Keys | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 94 | ## Step 3: Create the Brain | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 229 | ## Step 4: Import and Index | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 284 | ## Step 5: Load Skills | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 365 | ## Step 6: Identity (optional) | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 378 | ## Step 7: Recurring Jobs | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 399 | ## Step 8: Integrations | COMMENT |
| LOW | INSTALL_FOR_AGENTS.md | 407 | ## Step 9: Verify | COMMENT |
| LOW | llms-full.txt | 1146 | ## Step 0: If you are not Claude Code | COMMENT |
| LOW | llms-full.txt | 1157 | ## Step 1: Install GBrain | COMMENT |
| LOW | llms-full.txt | 1198 | ## Step 2: API Keys | COMMENT |
| LOW | llms-full.txt | 1229 | ## Step 3: Create the Brain | COMMENT |
| LOW | llms-full.txt | 1364 | ## Step 4: Import and Index | COMMENT |
| LOW | llms-full.txt | 1419 | ## Step 5: Load Skills | COMMENT |
| LOW | llms-full.txt | 1500 | ## Step 6: Identity (optional) | COMMENT |
| LOW | llms-full.txt | 1513 | ## Step 7: Recurring Jobs | COMMENT |
| LOW | llms-full.txt | 1534 | ## Step 8: Integrations | COMMENT |
| LOW | llms-full.txt | 1542 | ## Step 9: Verify | COMMENT |
| LOW | llms-full.txt | 3133 | ## Step 1: See what pack is active today | COMMENT |
| LOW | llms-full.txt | 3154 | ## Step 2: Fork the bundled pack | COMMENT |
| LOW | llms-full.txt | 3164 | ## Step 3: Activate the fork | COMMENT |
| LOW | llms-full.txt | 3176 | ## Step 4: Add a researcher type | COMMENT |
| LOW | llms-full.txt | 3201 | ## Step 5: Import some placeholder researcher pages | COMMENT |
| LOW | llms-full.txt | 3236 | ## Step 6: See the gap with `stats` | COMMENT |
| LOW | llms-full.txt | 3246 | ## Step 7: Backfill with `sync --apply` | COMMENT |
| LOW | llms-full.txt | 3282 | ## 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 | 327 | // Step 1: page is visible by default. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 332 | // Step 2: soft-delete, default getPage returns null. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 337 | // Step 3: include_deleted: true surfaces the row with deleted_at populated. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 342 | // 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 | 856 | // Step 1: register a throwaway client via CLI. | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 869 | // Step 2: mint a token through the live server. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 882 | // Step 3: revoke via the CLI subprocess. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 892 | // Step 4: previously-minted token must now be rejected at /mcp. Cascade | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 902 | // Step 5: re-running revoke-client on the now-deleted id must exit 1. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 485 | // Step 1: First sync of the clean repo — should succeed. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 491 | // Step 2: Add a broken file — frontmatter slug doesn't match path-derived slug. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 501 | // Step 3: Sync should block. Bookmark must NOT advance. | COMMENT |
| 353 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/explicit-skills-dir-readonly.test.ts | 24 | function writeTriggerOnlySkillsDir(skillsDir: string): void { | CODE |
| LOW | test/fence-write.test.ts | 90 | function installFakeDurabilityHook(repoPath: string): void { | CODE |
| LOW | test/cycle-synthesize.test.ts | 603 | 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/sync-rename-reconcile.serial.test.ts | 835 | async function setupUntrackedExoticScenario(): Promise<string> { | CODE |
| LOW | test/writer.test.ts | 657 | async function seedDuplicateBacklinkPages(): Promise<void> { | CODE |
| LOW | test/upgrade.serial.test.ts | 261 | async function runUpgradeAgainstFakeInstall(opts: { | CODE |
| LOW | test/onboard-coverage-invariants.test.ts | 35 | async function seedVisibleAndQuarantinedEntities(): Promise<void> { | CODE |
| LOW | test/minions.test.ts | 3276 | async function activeJobWithLockLapsedMs(msAgo: number): Promise<MinionJob> { | CODE |
| LOW | test/contextual-synopsis-model.serial.test.ts | 250 | async function expectHandlerRegistersNativeSynopsisRoute(opts: { | CODE |
| LOW | test/extract-timeline-from-meetings.test.ts | 112 | async function runExtractCapturingStderr(args: string[]): Promise<string[]> { | CODE |
| LOW | test/write-through-commit.serial.test.ts | 38 | function installFakeDurabilityHook(repoPath: string): void { | CODE |
| LOW | test/envelope-to-gbrain.test.ts | 102 | function assertEveryTimestampQuoted(page: string): void { | CODE |
| LOW | test/sync-cost-gate.serial.test.ts | 167 | function commitLargeIncrementalDrop(): void { | CODE |
| LOW | test/voyage-multimodal.test.ts | 33 | function configureVoyageMultimodal(env: Record<string, string | undefined> = {}) { | CODE |
| LOW | test/conversation-facts-type-allowlist-drift.test.ts | 123 | function countAllowedTypesImportsFrom(src: string, modulePathEscaped: string): number { | CODE |
| LOW | test/conversation-facts-type-allowlist-drift.test.ts | 137 | function countAllowedTypesImportsFromCommandModule(src: string): number { | CODE |
| LOW | test/db-guard-coverage.test.ts | 92 | function connectsToAmbientDatabaseUrl(src: string): boolean { | CODE |
| LOW | test/gbrain-to-envelope.test.ts | 106 | function assertSchemaFullyImplemented(schema: unknown, path = '#'): void { | CODE |
| LOW | test/oauth.test.ts | 521 | async function insertLegacyTokenWithPermissions( | CODE |
| LOW | test/oauth.test.ts | 599 | async function insertLegacyTokenWithScopes(name: string, scopesLiteral: string | null): Promise<string> { | CODE |
| LOW | test/benchmark-knowledge-runtime.ts | 269 | async function runDoctorCompletenessBench(): Promise<{ | CODE |
| LOW | test/cycle-synthesize-subagent-timeout.test.ts | 36 | async function seedWorthProcessingVerdict( | CODE |
| LOW | test/autopilot-drain-deadlock-2050.test.ts | 157 | function maskAsPostgresWithReconnect(target: PGLiteEngine, onReconnect: () => void): BrainEngine { | CODE |
| LOW | test/ambient-recall-hooks.serial.test.ts | 62 | function writePostgresConfigWithLeftoverPath(dataDir: string): void { | CODE |
| LOW | test/put-page-push-reporting.serial.test.ts | 39 | function installFakeDurabilityHook(repoPath: string): void { | CODE |
| LOW | test/jobs-gateway-refresh-set.test.ts | 39 | function parseBuiltinRegistrations(src: string): string[] { | CODE |
| LOW | test/schema-pack-merge.test.ts | 318 | function expandClosureFromManifest(m: SchemaPackManifest, type: string): string[] { | CODE |
| LOW | test/schema-bootstrap-coverage.test.ts | 539 | function parseIndexColumnReferences(sql: string): Array<{ table: string; column: string }> { | CODE |
| LOW | test/schema-bootstrap-coverage.test.ts | 681 | function buildIndexRefCoveragePredicate( | CODE |
| LOW | test/mcp-tool-defs.test.ts | 37 | function referenceParamDefToSchema(p: ParamDefLike): Record<string, unknown> { | CODE |
| LOW | test/memory-verbs-conformance.test.ts | 540 | function installDeterministicEmbedder() { | 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 | 133 | function parseRegisterClientOutput(out: string): { clientId: string; clientSecret: string } { | CODE |
| LOW | test/e2e/install-real-opencode.serial.test.ts | 253 | function registerGbrainIntoOpencode( | 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/agent-harness.ts | 1269 | export function resolveGbrainServerCommand(repoRoot: string, extraArgs: string[] = []): GbrainServerCommand { | CODE |
| LOW | test/minions/dream-quota-degradation.test.ts | 97 | async function seedWaitingSubagentFiller(): Promise<void> { | CODE |
| LOW | scripts/dx-explore.ts | 769 | async function scenarioCodexPluginInstall(ctx: ScenarioCtx, args: CliArgs): Promise<void> { | CODE |
| LOW | src/cli.ts | 307 | async function printSelfHelpWithoutEngine(command: string, args: string[]): Promise<boolean> { | CODE |
| LOW | src/cli.ts | 1053 | async function printIdentityBannerBestEffort( | CODE |
| LOW | src/cli.ts | 1324 | export function applyThinClientSourceScope( | CODE |
| LOW | src/cli.ts | 1643 | export function resetRetrievalMetaForTests(): void { | CODE |
| LOW | src/cli.ts | 3509 | export function resolveReadOnlyDispatchTimeoutMs( | 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/autopilot-paths.ts | 40 | export function autopilotDisabledMarkerPath(): string { | CODE |
| LOW | src/core/autopilot-paths.ts | 78 | export function autopilotPausedMarkerPath(): string { | CODE |
| LOW | src/core/autopilot-paths.ts | 90 | export function autopilotDisableStrikesPath(): string { | CODE |
| LOW | src/core/last-retrieved.ts | 72 | export async function awaitPendingLastRetrievedWrites( | CODE |
| LOW | src/core/audit-parser-probe.ts | 36 | export function readRecentParserProbeEvents( | CODE |
| LOW | src/core/audit-parser-probe.ts | 50 | export function computeParserProbeAuditFilename(now: Date = new Date()): string { | CODE |
| LOW | src/core/destructive-guard.ts | 136 | export function formatClientReferentsBlock( | CODE |
| LOW | src/core/destructive-guard.ts | 279 | export function checkDestructiveConfirmation( | CODE |
| LOW | src/core/embedding-context.ts | 218 | export function wrapChunkTextsForStoredMode( | CODE |
| LOW | src/core/timeline-extract.ts | 32 | export function extractTimelineFromContent(content: string, slug: string): ExtractedTimelineEntry[] { | CODE |
| 516 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | llms-full.txt | 4100 | # Scaling skills past 300 without drowning the context window | COMMENT |
| MEDIUM | TODOS.md | 3938 | three real wins in PR #1316 (`chipoto69` — "Phase 4 multi-agent hardening") | CODE |
| MEDIUM | TODOS.md | 4805 | ## v0.37.4.0 pgGraph CI scaffolding follow-ups (v0.37.x+) | COMMENT |
| MEDIUM | test/embedding-input-limit.test.ts | 2 | * #4530 — the chunker respects the embedding model's per-input token limit. | COMMENT |
| MEDIUM | test/openclaw-plugin-manifest.test.ts | 63 | // by slug; `gbrain skillpack scaffold <slug>` resolves against the plugin | COMMENT |
| MEDIUM | test/openclaw-plugin-manifest.test.ts | 64 | // bundle. A recommendation the scaffold can't fulfill is a dead-end CTA — | COMMENT |
| MEDIUM | test/post-install-advisory.test.ts | 263 | // (the scaffold command is --all when everything is missing). | 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/cycle-dream-output-root.test.ts | 310 | // serve the tool-less oneshot attempt AND its agentic fallback. | COMMENT |
| MEDIUM | test/advisor-collectors-findings.test.ts | 208 | expect(f.fix.dispatch_id).toBeUndefined(); // scaffold is not --apply-dispatchable | CODE |
| MEDIUM | test/embedding-pricing.test.ts | 182 | // #4344 — hosted-recipe coverage gate: every embedding model the voyage | COMMENT |
| MEDIUM | test/brain-durability-hook.serial.test.ts | 160 | test('#3925 — the scaffolding commit does NOT fire the hook (no racing background push)', async () => { | CODE |
| MEDIUM | test/sync-failure-ledger.serial.test.ts | 293 | 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/skill-currency.test.ts | 83 | // alpha: scaffold, leave untouched → current | COMMENT |
| MEDIUM | test/skill-currency.test.ts | 86 | // beta: scaffold, then user edits a file → drifted | COMMENT |
| MEDIUM | test/skill-currency.test.ts | 133 | // alpha ships two files; scaffold both, then delete one → identical>0, missing>0. | COMMENT |
| MEDIUM | test/subagent-handler.test.ts | 1122 | expect(client.calls.length).toBe(0); // agentic loop never ran | CODE |
| 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/workspace-generic-compat.test.ts | 120 | // scaffold reports as written actually exists; paired sources (from | COMMENT |
| MEDIUM⚡ | test/e2e/workspace-generic-compat.test.ts | 131 | // check-resolvable stays clean after scaffold: the scaffolded skill | COMMENT |
| MEDIUM⚡ | test/e2e/workspace-generic-compat.test.ts | 132 | // is reachable via its own frontmatter triggers (scaffold contract 1 | COMMENT |
| MEDIUM⚡ | test/e2e/workspace-generic-compat.test.ts | 139 | // Contract 2 (scaffold.ts header): once a file lands, the user owns | 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 | 922 | ## 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 | 82 | - `src/core/brain-repo-durability.ts` + `src/commands/sources-harden.ts` — brain-repo git durability. `hardenBrainRepo(o | CODE |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 194 | - `src/core/skillpack/{personas,bridge-state,harness-bridge}.ts` + `src/commands/skillpack/{shared,scaffold,reference,ha | CODE |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 195 | - `src/core/skillpack/{manifest-v1,tarball,state,remote-source,trust-prompt,bootstrap-display,scaffold-third-party,regis | CODE |
| MEDIUM⚡ | docs/architecture/KEY_FILES.md | 198 | - `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 | 199 | - `src/core/advisor/{types,run,render,recommended-set,history,apply,collect-*}.ts` + `src/commands/advisor.ts` (#2180) — | CODE |
| MEDIUM | docs/architecture/KEY_FILES.md | 298 | - `src/core/minions/handlers/subagent-oneshot.ts` — #4216 oneshot synthesis runner. ONE rate-leased tool-less `gateway.c | CODE |
| MEDIUM | docs/architecture/KEY_FILES.md | 375 | - `src/core/cycle/synthesize.ts` — Synthesize phase: conversation-transcript-to-brain pipeline, a two-stage cascade (#41 | CODE |
| MEDIUM | docs/architecture/schema-packs.md | 67 | gbrain schema init <name> # scaffold a stub pack (experimental) | CODE |
| MEDIUM | docs/architecture/topologies.md | 271 | ### 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 | 39 | ### `gbrain skillpack scaffold <name> [--workspace PATH]` | COMMENT |
| MEDIUM | docs/guides/skillpacks-as-scaffolding.md | 195 | # shared deps that scaffold drops in: | COMMENT |
| MEDIUM | docs/guides/skillpacks-as-scaffolding.md | 203 | ## The harness bridge: `scaffold --harness` (cathedral-7) | 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 | 250 | # 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/run-e2e.sh | 236 | # serve-http-multi-agent rides the same carve-out for a different reason: | COMMENT |
| 61 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 | 327 | // Step 1: page is visible by default. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 332 | // Step 2: soft-delete, default getPage returns null. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 337 | // Step 3: include_deleted: true surfaces the row with deleted_at populated. | COMMENT |
| LOW⚡ | test/pages-soft-delete.test.ts | 342 | // 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 | 856 | // Step 1: register a throwaway client via CLI. | COMMENT |
| LOW | test/e2e/serve-http-oauth.test.ts | 869 | // Step 2: mint a token through the live server. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 882 | // Step 3: revoke via the CLI subprocess. | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 892 | // Step 4: previously-minted token must now be rejected at /mcp. Cascade | COMMENT |
| LOW⚡ | test/e2e/serve-http-oauth.test.ts | 902 | // Step 5: re-running revoke-client on the now-deleted id must exit 1. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 485 | // Step 1: First sync of the clean repo — should succeed. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 491 | // Step 2: Add a broken file — frontmatter slug doesn't match path-derived slug. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 501 | // Step 3: Sync should block. Bookmark must NOT advance. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 515 | // Step 4: Run with skipFailed — bookmark advances, entry gets acked. | COMMENT |
| LOW⚡ | test/e2e/sync.test.ts | 525 | // Step 5: Verify what doctor would render for the historical entry. | COMMENT |
| LOW | test/e2e/sync.test.ts | 540 | // Step 6: Add a second broken file — this one with a different failure code | COMMENT |
| LOW | test/e2e/sync.test.ts | 556 | // Step 7: Sync blocks again on the new failure. Old entry stays acked. | COMMENT |
| LOW | test/e2e/sync.test.ts | 570 | // 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/fresh-install-pglite.test.ts | 302 | // Step 1: keyless install → deferred-setup sentinel persisted. | COMMENT |
| LOW⚡ | test/e2e/fresh-install-pglite.test.ts | 307 | // Step 2: the key arrives; run the documented recovery command. | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 209 | // Step 3: snapshot. | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 218 | // Step 4: DELETE every rebuildable derived table. NOT tags — tags | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 229 | // Step 5: re-import all + re-extract. Re-import is what rebuilds | COMMENT |
| LOW⚡ | test/e2e/system-of-record-invariant.test.ts | 234 | // Step 6: snapshot + diff. | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 66 | # Step 1: build the legacy fixture (drop schema, init to LATEST, down-mutate) | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 77 | # Step 2: walk forward. `gbrain doctor` triggers engine.connect() which | COMMENT |
| LOW | tests/heavy/pg_upgrade_matrix.sh | 92 | # Step 3: assert status is non-fatal. We accept 'ok' and 'warnings' because | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 58 | # Step 1: seed the synthetic brain. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 85 | # Step 2: init brain + register the source. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 124 | # Step 3: run gbrain doctor; capture wall-clock + exit + frontmatter_integrity status. | COMMENT |
| LOW | tests/heavy/frontmatter_scan_wallclock.sh | 135 | # Step 4: assert. | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 55 | # Step 1: ensure schema is up-to-date by running doctor once. Doctor exits | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 62 | # Step 2: create a tiny brain dir + register it as sync.repo_path so each sync | COMMENT |
| LOW | tests/heavy/sync_lock_regression.sh | 99 | # Step 3: spawn N parallel sync processes. Capture each one's exit code + | COMMENT |
| LOW | tests/heavy/sync_lock_regression.sh | 125 | # Step 4: collect outcomes | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 150 | # Step 5: assert no leaked gbrain_cycle_locks rows. The pkey column is `id`, | COMMENT |
| LOW⚡ | tests/heavy/sync_lock_regression.sh | 155 | # Step 6: verdict | COMMENT |
| 96 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 | 33 | // Match by substring so tests are robust against whitespace. | COMMENT |
| MEDIUM⚡ | test/bootstrap-doctor-checks.test.ts | 140 | test('a harness receipt ALONE opens the gate (#4043 — harness-only boxes get checks)', async () => { | CODE |
| MEDIUM | test/sources-ops.test.ts | 1080 | // #2707 git validation, which the fake-git harness defeats. | COMMENT |
| MEDIUM | test/cycle-synthesize-daily-cap.test.ts | 149 | // CDX-4 (#4217 family): in this keyless harness every submitted child | 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/cycle-synthesize-subagent-timeout.test.ts | 76 | // CDX-4 (#4217 family): the child dies in this keyless harness, and a | COMMENT |
| MEDIUM | test/bootstrap-dispatcher.serial.test.ts | 903 | describe('uninstall × harness receipt (#4043 harness-first composition)', () => { | CODE |
| MEDIUM | test/transcript-render.test.ts | 143 | const nasty = session(BASIC.messages, { title: 'quote" colon: [brackets] re #4106', harness: 'chatgpt' }); | CODE |
| MEDIUM | test/migration-v120.test.ts | 39 | // string so the assertion is robust to driver array shape. | COMMENT |
| MEDIUM | test/connect.test.ts | 199 | test('claude argv with scope — inserted after the name (#4043 harness lane; claude default is local)', () => { | CODE |
| MEDIUM | tests/docker/bootstrap-e2e.sh | 3 | # harness [A7]. This is the script .github/workflows/heavy-tests.yml's | COMMENT |
| MEDIUM | …s/integrations/qm-harness-snippets/provision-scopes.sh | 3 | # (or any multi-user agent harness with per-person + per-channel scopes). | COMMENT |
| MEDIUM | …s/integrations/qm-harness-snippets/provision-scopes.sh | 30 | # scope's sandbox (e.g. via the harness keychain or a one-time secret drop), | 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 | 105 | # internals survive untouched. We keep GBRAIN_HOME (just set above for HOME | COMMENT |
| MEDIUM | scripts/test-shard.sh | 77 | # evals/ is included: its *.test.ts files (eval-harness unit tests) were | COMMENT |
| MEDIUM⚡ | scripts/guard-self-test.sh | 2 | # W0 fix-wave (Tier-1 #11 / D5.14): guard self-test harness. | COMMENT |
| MEDIUM⚡ | scripts/guard-self-test.sh | 9 | # This harness makes that class structurally impossible for scanner guards: | COMMENT |
| MEDIUM⚡ | scripts/guard-self-test.sh | 16 | # Also prints total harness wall-clock (guard-runtime budget line, D4.5): | COMMENT |
| MEDIUM | scripts/check-fixture-privacy.sh | 24 | # cathedral-4: the transcripts-import fixtures (raw harness/export shapes) | COMMENT |
| MEDIUM | scripts/check-test-real-names.sh | 35 | # 'Hermes' removed (hermes-harness wave): here it names NousResearch/hermes-agent, | COMMENT |
| MEDIUM | scripts/check-jsonb-pattern.sh | 20 | # W0 fix-wave (Tier-1 #11): self-test seam — the guard harness points this at | COMMENT |
| MEDIUM | scripts/check-no-double-retry.sh | 22 | # W0 fix-wave (Tier-1 #11): self-test seam. The guard harness points this at | COMMENT |
| MEDIUM | scripts/check-bootstrap-templates.sh | 200 | # ── (e) harness-scoping counter-signal pins (scope = Claude Code + opencode) ─ | COMMENT |
| LOW | scripts/import-from-upstream.sh | 171 | # subordinate script. For v0, just call the guard against the destination | COMMENT |
| MEDIUM | .github/workflows/heavy-tests.yml | 530 | # test/helpers/agent-harness.ts and scenarioGrokInstall in | COMMENT |
| MEDIUM | .github/workflows/test.yml | 270 | # PGLite, zero API keys, ~15s for the full 141-fixture × 3-harness run. | COMMENT |
| MEDIUM | templates/bootstrap/cloud-setup-script.sh | 41 | # gbrain bootstrap hooks --harness claude-code # committed-carrier hooks (next session picks them up) | COMMENT |
| MEDIUM | src/core/source-resolver.ts | 198 | // to tier 6 rather than throwing. Resolver stays robust to bad config. | COMMENT |
| MEDIUM | src/core/mcp-registration.ts | 3 | * wiring (extracted from src/commands/connect.ts for #4043 [F5]: the harness | COMMENT |
| MEDIUM | src/core/token-mint.ts | 3 | * (#4043 `gbrain bootstrap harness`; extracted from src/commands/auth.ts's | COMMENT |
| MEDIUM | src/core/bootstrap/format.ts | 214 | // Machine-level harness receipt (#4043 `gbrain bootstrap harness`) | COMMENT |
| MEDIUM | src/core/bootstrap/hooks.ts | 50 | * 'harness' on #4043 harness-mode wiring: `gbrain hook` yields when the | COMMENT |
| MEDIUM | src/core/bootstrap/host-specs.ts | 349 | `# gbrain:${GBRAIN_HARNESS_MARKER_VALUE} begin - managed by \`gbrain bootstrap harness\`; do not edit inside`; | CODE |
| MEDIUM | src/commands/hook.ts | 259 | // #4043 harness-lane defer guard: Claude Code MERGES user- and | COMMENT |
| MEDIUM | src/commands/connect.ts | 69 | // #4043 (the bootstrap harness lane consumes them; core must not import from | COMMENT |
| MEDIUM | src/commands/eval-schema-authoring.ts | 3 | // Codex finding #9 honored: this harness's pass-criterion measures | COMMENT |
| MEDIUM | src/commands/doctor/bootstrap-checks.ts | 100 | // #4043: a harness-only box (bootstrap harness, no workspace install) is | COMMENT |
| 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/grade-takes-evidence.test.ts | 132 | title: 'Acme Corp', | 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 | 74 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 84 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 95 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 142 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 189 | compiled_truth: 'placeholder', | CODE |
| LOW | test/chunk-grain-fts.test.ts | 198 | 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/serve-sync-runner.serial.test.ts | 42 | execSync('git config user.email "test@test.com"', { cwd: repo, stdio: 'pipe' }); | CODE |
| LOW | test/sync-rename-reconcile.serial.test.ts | 78 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/sync-rename-reconcile.serial.test.ts | 2182 | execSync('git config user.email "test@test.com" && git config user.name "Test"', { | CODE |
| LOW | test/extract-by-mention-rebuild.test.ts | 78 | 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 | 15 | expect(refs[0].name).toBe('Jane Doe'); | CODE |
| LOW | test/backlinks.test.ts | 24 | expect(refs[0].name).toBe('Acme Corp'); | CODE |
| LOW | test/backlinks.test.ts | 48 | expect(extractPageTitle('---\ntitle: "Jane Doe"\ntype: person\n---\n# Jane')).toBe('Jane Doe'); | CODE |
| LOW | test/backlinks.test.ts | 52 | expect(extractPageTitle('---\ntype: person\n---\n# Jane Doe')).toBe('Jane Doe'); | CODE |
| LOW | test/frontmatter-inference.test.ts | 143 | expect(result.title).toBe('John Doe'); | CODE |
| LOW | test/sync-delete-trailing-hyphen.serial.test.ts | 68 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/sync.test.ts | 428 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/sync.test.ts | 995 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/sync.test.ts | 1227 | 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 | 99 | test('2. multi-word phrase pass — "Acme Corp" matches multi-word, not single', () => { | CODE |
| LOW | test/by-mention.test.ts | 102 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/by-mention.test.ts | 193 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/by-mention.test.ts | 201 | // Second occurrence of "Acme": multi-word "Acme Corp" matches → multi-word wins. | COMMENT |
| LOW | test/by-mention.test.ts | 212 | { slug: 'companies/acme-corp', source_id: 'default', title: 'Acme Corp' }, | CODE |
| LOW | test/by-mention.test.ts | 565 | // words of "Acme Corp" silently kills a match that used to work. | COMMENT |
| LOW | test/by-mention.test.ts | 567 | { 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/sync-brain-op-source-id.test.ts | 38 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/sync-include-hidden.test.ts | 34 | execSync('git config user.email "test@test.com"', { cwd: dir, 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 | 193 | { slug: 'companies/acme', title: 'Acme Corp', domain: 'companies' }, | CODE |
| LOW | test/orphans.test.ts | 222 | { slug: 'companies/acme', title: 'Acme Corp', domain: 'companies' }, | CODE |
| LOW | test/orphans.test.ts | 226 | expect(out).toContain('Acme Corp'); | CODE |
| LOW | test/sync-deleted-slug-embed.test.ts | 40 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/brainbench-adapters.test.ts | 36 | turns: [{ turn_id: 1, role: 'user', text: 'placeholder' }], | CODE |
| LOW | test/gbrain-to-envelope.test.ts | 1842 | expect(JSON.stringify(result.envelope)).not.toContain('placeholder'); | 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-ops-pages.serial.test.ts | 33 | execSync('git config user.email "test@test.com"', { cwd: repo, stdio: 'pipe' }); | CODE |
| LOW | test/import-source-cr-mode.serial.test.ts | 35 | env: { OPENAI_API_KEY: 'sk-test-fake-key-for-stub' }, | 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/google-access.test.ts | 53 | expect(parseTokenOutput('{"access_token":"ya29.fake-token-xyz"}')).toEqual({ | CODE |
| LOW | test/google-access.test.ts | 54 | token: 'ya29.fake-token-xyz', | CODE |
| LOW | test/google-access.test.ts | 125 | const p = new CommandAccessProvider('echo fake-token-abc123'); | CODE |
| LOW | test/google-access.test.ts | 126 | expect(await p.getAccessToken()).toBe('fake-token-abc123'); | CODE |
| LOW | test/sync-parallel.test.ts | 30 | execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: 'pipe' }); | CODE |
| LOW | test/sync-pull-failed-anchor.serial.test.ts | 73 | execSync('git config user.email "test@test.com"', { cwd: dir, stdio: 'pipe' }); | CODE |
| LOW | test/sync-pull-failed-anchor.serial.test.ts | 178 | execSync('git config user.email "test@test.com"', { cwd: mirror, stdio: 'pipe' }); | CODE |
| 49 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/chunkers/code-dart.test.ts | 40 | print(what.toUpperCase() + '!!! ' + what.toUpperCase()); | CODE |
| HIGH | test/chunkers/code.test.ts | 293 | print("decorated_fn doubling", x, "->", doubled) | CODE |
| 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 | 23 | # Usage: | COMMENT |
| LOW | tests/heavy/sync_timeout_rescue.sh | 39 | # Usage: | COMMENT |
| LOW | …s/integrations/qm-harness-snippets/provision-scopes.sh | 18 | # 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-engine-dynamic-import.sh | 10 | # 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 | 57 | # Usage: | COMMENT |
| LOW | scripts/wave-security-scan.sh | 12 | # 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 | 162 | // Pages went to 'default' as requested. | COMMENT |
| HIGH | test/retrieval-upgrade-planner.test.ts | 363 | // Resume path also calls runSchemaTransition. Mark as requested so the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | plugin/skills/perplexity-research/SKILL.md | 0 | # topic: <topic> # brain context (what we already know): <embedded gbrain content> # find: what's new since 2026-mm-dd t | STRING |
| HIGH | …iants/gbrain-daily/skills/perplexity-research/SKILL.md | 0 | # topic: <topic> # brain context (what we already know): <embedded gbrain content> # find: what's new since 2026-mm-dd t | STRING |
| HIGH | skills/perplexity-research/SKILL.md | 0 | # topic: <topic> # brain context (what we already know): <embedded gbrain content> # find: what's new since 2026-mm-dd t | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/loops-extract-parse.test.ts | 95 | const wrapped = `Sure! Here is the extraction you asked for:\n\n${payload()}\n\nLet me know if you need anything els | CODE |
| MEDIUM | src/core/cycle/extract-atoms.ts | 221 | - 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 |