Open-source, local-first apps.
This report presents the forensic synthetic code analysis of EpicenterHQ/epicenter, a TypeScript project with 4,698 GitHub stars. SynthScan v2.0 examined 506,338 lines of code across 3324 source files, recording 1169 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 6.8 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 1169 distinct pattern matches across 14 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 | …s/20260109T140700-opencode-integration-architecture.md | 283 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …s/20260109T140700-opencode-integration-architecture.md | 285 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …s/20260109T140700-opencode-integration-architecture.md | 354 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …s/20260109T140700-opencode-integration-architecture.md | 356 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 75 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 77 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 91 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 93 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 107 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 109 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 123 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …cs/20260131T020000-dynamic-workspace-simplification.md | 125 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | …523T000000-greenfield-workspace-encryption-boundary.md | 423 | // ─── BEFORE (browser, fuji) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …523T000000-greenfield-workspace-encryption-boundary.md | 433 | // ─── AFTER (browser, fuji) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …523T000000-greenfield-workspace-encryption-boundary.md | 444 | // ─── BEFORE (daemon, fuji) ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …523T000000-greenfield-workspace-encryption-boundary.md | 460 | // ─── AFTER (daemon, fuji) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 630 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 632 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 637 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 639 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | specs/20260123T102500-single-workspace-architecture.md | 650 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | specs/20260123T102500-single-workspace-architecture.md | 652 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 669 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 671 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 679 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260123T102500-single-workspace-architecture.md | 681 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 323 | // ── Single doc table ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 338 | // ── Multi-doc table ───────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 345 | // ── GUID-only access (no row needed) ──────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 348 | // ── Destructure for reuse ─────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 356 | // ── Row deletion triggers automatic cleanup ───────────────── | COMMENT |
| MEDIUM⚡ | specs/20260217T094400-table-level-document-api.md | 361 | // ── Table without docs: .docs is undefined ───────────────── | COMMENT |
| MEDIUM | specs/y-meta-stores.md | 149 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | specs/y-meta-stores.md | 151 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 165 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 167 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 177 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 179 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 190 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 192 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 197 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 199 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | specs/y-meta-stores.md | 357 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | specs/y-meta-stores.md | 359 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 380 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 382 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 391 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 393 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 402 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/y-meta-stores.md | 404 | // ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 410 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 412 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 421 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 423 | // ───────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1182 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1184 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1188 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1190 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1195 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | specs/20260202T162500-reddit-workspace-migration.md | 1197 | // ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| 580 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | specs/20260420T152026-definedocument-primitive.md | 283 | // Usage (was workspace.tables.notes.documents.body.get(id)) | COMMENT |
| CRITICAL | specs/20260420T152026-definedocument-primitive.md | 354 | - Update consumers: `workspace.tables.X.documents.Y.get(id)` → `<exportedFactory>.get(id)`. | CODE |
| CRITICAL | specs/20260420T152026-definedocument-primitive.md | 399 | Now that `defineDocument` exposes the construction closure, fuji's entry doc becomes a separate module (`apps/fuji/src/l | CODE |
| CRITICAL | specs/20260420T230100-collapse-document-framework.md | 240 | ws.tables.entries.documents.content.get(rowId) // returns handle with .bind(), .read(), .write() | CODE |
| CRITICAL | specs/20260420T230100-collapse-document-framework.md | 345 | ### Downstream callers using `ws.tables.foo.documents.bar.read(id)` | COMMENT |
| CRITICAL | specs/20260420T230100-collapse-document-framework.md | 347 | Old call: `await ws.tables.entries.documents.content.read(rowId)` (framework-wired sugar). | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 327 | const ydoc = await client.tables.files.docs.content.open(result.row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 334 | const text = await client.tables.files.docs.content.read(result.row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 335 | await client.tables.files.docs.content.write(result.row, 'new content'); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 341 | const bodyDoc = await client.tables.notes.docs.body.open(note.row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 342 | const coverDoc = await client.tables.notes.docs.cover.open(note.row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 346 | const ydoc = await client.tables.files.docs.content.open(fileId); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 584 | client.tables.files.docs.content.open(row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 585 | client.tables.files.docs.content.read(row); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 586 | client.tables.files.docs.content.write(row, text); | CODE |
| CRITICAL⚡ | specs/20260217T094400-table-level-document-api.md | 587 | client.tables.files.docs.content.destroy(row); | CODE |
| CRITICAL | .agents/skills/yjs/SKILL.md | 202 | using messages = workspace.tables.conversations.docs.messages.open(id); | CODE |
| CRITICAL | …gents/skills/workspace-api/references/primitive-api.md | 58 | using handle = workspace.tables.files.docs.content.open(fileId); | CODE |
| CRITICAL | …gents/skills/workspace-api/references/primitive-api.md | 68 | const guid = workspace.tables.files.docs.content.guid(fileId); | CODE |
| CRITICAL | …gents/skills/workspace-api/references/primitive-api.md | 197 | using handle = workspace.tables.files.docs.content.open(fileId); | CODE |
| CRITICAL | …gents/skills/workspace-api/references/primitive-api.md | 211 | using handle = workspace.tables.files.docs.content.open(fileId); | CODE |
| CRITICAL | docs/CONTEXT.md | 101 | through `ws.tables.X.docs.field.open(rowId)`. The workspace owns guid derivation. | CODE |
| CRITICAL | …adr/0005-child-docs-are-bound-through-the-workspace.md | 19 | and reached through a bound accessor, `ws.tables.X.docs.field.open(rowId)`. The | CODE |
| CRITICAL | packages/workspace/README.md | 216 | `workspace.tables.items.docs.body.open(itemId)`. Two tabs of the same principal share | CODE |
| CRITICAL | packages/workspace/README.md | 496 | const handle = workspace.tables.files.docs.content.open(fileId); | CODE |
| CRITICAL | packages/workspace/README.md | 639 | reader derives the same guid with `workspace.tables.files.docs.content.guid(id)` | CODE |
| CRITICAL | packages/workspace/README.md | 678 | using handle = workspace.tables.files.docs.content.open('file-1'); | CODE |
| CRITICAL | packages/workspace/README.md | 1337 | using handle = workspace.tables.files.docs.content.open('file-1'); | CODE |
| CRITICAL⚡ | packages/workspace/src/index.ts | 34 | * using body = workspace.tables.posts.docs.body.open('post-1'); | COMMENT |
| CRITICAL | packages/workspace/src/document/table.ts | 474 | * handle (`workspace.tables.notes.docs.content.open(rowId)`), so field names | COMMENT |
| CRITICAL | …kspace/src/document/attach-indexed-db-eviction.test.ts | 128 | const messages = workspace.tables.conversations.docs.messages.open('c1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 140 | const body = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 170 | using body = workspace.tables.notes.docs.set.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 186 | const a = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 187 | const b = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 209 | const a = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 211 | const b = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 232 | const one = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 233 | const two = workspace.tables.notes.docs.body.open('note-2'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 275 | workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace.test.ts | 315 | using body = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | …s/workspace/src/document/bun-local-persistence.test.ts | 36 | const body = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | …s/workspace/src/document/bun-local-persistence.test.ts | 51 | const body = workspace.tables.notes.docs.body.open('note-1'); | CODE |
| CRITICAL | …s/workspace/src/document/bun-local-persistence.test.ts | 71 | const body = workspace.tables.notes.docs.body.open('note-2'); | CODE |
| CRITICAL | …s/workspace/src/document/bun-local-persistence.test.ts | 84 | const reopenedBody = reopened.tables.notes.docs.body.open('note-2'); | CODE |
| CRITICAL | packages/workspace/src/document/workspace-mount.test.ts | 189 | const expectedGuid = runtime.tables.conversations.docs.messages.guid('c1'); | CODE |
| CRITICAL | packages/workspace/src/document/connect.test.ts | 68 | const body = bundle.tables.notes.docs.body.open('n1'); | CODE |
| CRITICAL | packages/workspace/src/document/connect.test.ts | 74 | expect(names).toContain(bundle.tables.notes.docs.body.guid('n1')); | CODE |
| CRITICAL | packages/workspace/src/document/connect.test.ts | 104 | const body = bundle.tables.notes.docs.body.open('n2'); | CODE |
| CRITICAL | packages/server/src/middleware/require-auth.ts | 99 | user = await c.var.db.query.user.findFirst({ | CODE |
| CRITICAL | packages/filesystem/src/file-system.test.ts | 40 | guid: ws.tables.files.docs.content.guid(fileId), | CODE |
| CRITICAL | packages/skills/src/browser.ts | 55 | guid: doc.tables.skills.docs.instructions.guid(skillId), | CODE |
| CRITICAL | packages/skills/src/browser.ts | 78 | guid: doc.tables.references.docs.content.guid(referenceId), | CODE |
| CRITICAL | packages/skills/src/browser.ts | 133 | clearDocument(doc.tables.skills.docs.instructions.guid(skill.id)), | CODE |
| CRITICAL | packages/skills/src/browser.ts | 140 | doc.tables.references.docs.content.guid(reference.id), | CODE |
| CRITICAL | …n-in-migration/create-sign-in-migration.svelte.test.ts | 169 | const body = bundle.tables.notes.docs.body.open(options.note.id); | CODE |
| CRITICAL | …n-in-migration/create-sign-in-migration.svelte.test.ts | 187 | const messages = bundle.tables.conversations.docs.messages.open( | CODE |
| CRITICAL | apps/honeycrisp/README.md | 31 | Each note's body is a `Y.XmlFragment` in the `notes.body` child doc declared by `honeycrispWorkspace`. The browser opene | CODE |
| CRITICAL | apps/honeycrisp/README.md | 70 | Each note's body lives in a separate Y.Doc opened by `honeycrisp.tables.notes.docs.body.open(noteId)`. The handle yields | CODE |
| CRITICAL⚡ | apps/opensidian/src/routes/about/+page.svelte | 77 | using handle = workspace.tables.files.docs.content.open(fileId); | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/20251104T000000 simplify-markdown-index-signatures.md | 57 | ### Step 1: Create explicit types | COMMENT |
| LOW | …/20251104T000000 simplify-markdown-index-signatures.md | 69 | ### Step 2: Update function signatures | COMMENT |
| LOW | specs/20251027T140000 db-phase-2-file-system.md | 175 | ### Step 1: Create File System DB Implementation | COMMENT |
| LOW | specs/20251027T140000 db-phase-2-file-system.md | 294 | ### Step 2: Modify Recorder Services | COMMENT |
| LOW | specs/20251027T140000 db-phase-2-file-system.md | 376 | ### Step 3: Update DB Interface | COMMENT |
| LOW | specs/20251027T140000 db-phase-2-file-system.md | 407 | ### Step 4: File Operations | COMMENT |
| LOW | specs/20251027T140000 db-phase-2-file-system.md | 434 | ### Step 5: Migration Strategy | COMMENT |
| LOW | specs/20260319T140004-autumn-phase4-storage-billing.md | 123 | ### Step 1: Add storage feature to `autumn.config.ts` | COMMENT |
| LOW | specs/20260319T140004-autumn-phase4-storage-billing.md | 129 | ### Step 2: Create storage aggregation function | COMMENT |
| LOW | specs/20260319T140004-autumn-phase4-storage-billing.md | 175 | ### Step 3: Wire storage sync into existing flows | COMMENT |
| LOW | specs/20260319T140004-autumn-phase4-storage-billing.md | 192 | ### Step 4: Gate workspace/document creation | COMMENT |
| LOW | specs/20260319T140004-autumn-phase4-storage-billing.md | 212 | ### Step 5: Push config and test | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 69 | ### Step 1: Create Type Definitions | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 158 | ### Step 2: Rename and Refactor Dexie Implementation | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 186 | ### Step 3: Create Desktop Implementation | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 207 | ### Step 4: Update Main Index | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 240 | ### Step 5: Update All Imports | COMMENT |
| LOW | specs/20251027T120000 db-service-platform-split.md | 251 | ### Step 6: Testing | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 10 | ### Step 1: Hub & Local Server Composition Split | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 18 | ### Step 2: Better Auth Plugin | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 26 | ### Step 3: Key Management on Hub | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 36 | ### Step 4: OLLAMA_HOST Configuration | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 40 | ### Step 5: Local Server Auth Boundary | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 47 | ### Step 6: Client Hub URL Configuration | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 53 | ### Step 7: AI Proxy for OpenCode | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 59 | ### Step 8: Server Discovery via Yjs Awareness | COMMENT |
| LOW⚡ | …ecs/20260223T102800-network-topology-execution-plan.md | 66 | ### Step 9: OpenCode Integration | COMMENT |
| LOW | …ecs/20260124T163000-developer-experience-schema-api.md | 824 | // Step 1: Define migration | COMMENT |
| LOW | …ecs/20260124T163000-developer-experience-schema-api.md | 840 | // Step 2: Run migration (creates new epoch) | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 38 | ### Step 1: Add dependencies | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 48 | ### Step 2: Create `apps/api/autumn.config.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 157 | ### Step 3: Add `AUTUMN_SECRET_KEY` to wrangler | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 170 | ### Step 4: Create `apps/api/src/autumn.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 193 | ### Step 5: Create `apps/api/src/model-classes.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 233 | ### Step 6: Create `apps/api/src/ensure-autumn-customer.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 275 | ### Step 7: Modify `apps/api/src/ai-chat.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 443 | ### Step 8: Wire middleware in `apps/api/src/app.ts` | COMMENT |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 484 | ### Step 9: Push config and smoke test | COMMENT |
| LOW | specs/20260425T180002-orchestration-tracker.md | 70 | ### Step 5: execute the combined PR-D + PR-E branch | COMMENT |
| LOW | …ecs/20260107T114209-cell-level-crdt-merging.handoff.md | 83 | ### Step 1: Update Storage Structure | COMMENT |
| LOW | …ecs/20260107T114209-cell-level-crdt-merging.handoff.md | 91 | ### Step 2: Update CRUD Methods | COMMENT |
| LOW⚡ | …ecs/20260107T114209-cell-level-crdt-merging.handoff.md | 145 | ### Step 3: Update Observer | COMMENT |
| LOW⚡ | …ecs/20260107T114209-cell-level-crdt-merging.handoff.md | 153 | ### Step 4: Run Tests | COMMENT |
| LOW⚡ | …ecs/20260107T114209-cell-level-crdt-merging.handoff.md | 162 | ### Step 5: Verify Providers | COMMENT |
| LOW | specs/20251128T100000-zod-v4-migration.md | 129 | ### Step 1: Find All Zod Usage | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 143 | ### Step 2: Update Error Messages | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 150 | ### Step 3: Update String Validators | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 157 | ### Step 4: Update Object Methods | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 165 | ### Step 5: Update Error Handling | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 172 | ### Step 6: Update Function Schemas | COMMENT |
| LOW⚡ | specs/20251128T100000-zod-v4-migration.md | 176 | ### Step 7: Test Thoroughly | COMMENT |
| LOW⚡ | specs/20260107T194104-action-system-redesign.md | 63 | // Step 1: Define workspace | COMMENT |
| LOW⚡ | specs/20260107T194104-action-system-redesign.md | 71 | // Step 2: Create client with capabilities | COMMENT |
| LOW⚡ | specs/20260107T194104-action-system-redesign.md | 74 | // Step 3: Define actions (wrapping client methods) | COMMENT |
| LOW | specs/20260107T194104-action-system-redesign.md | 102 | // Step 4: Pass to server and/or CLI | COMMENT |
| LOW⚡ | specs/20251128T110000-bits-ui-migration.md | 129 | ### Step 1: Update Catalog Version | COMMENT |
| LOW⚡ | specs/20251128T110000-bits-ui-migration.md | 136 | ### Step 2: Find All Slider Components | COMMENT |
| LOW⚡ | specs/20251128T110000-bits-ui-migration.md | 144 | ### Step 3: Fix Type Errors | COMMENT |
| LOW | specs/20251128T110000-bits-ui-migration.md | 183 | ### Step 4: Run Type Check | COMMENT |
| LOW | specs/20251128T110000-bits-ui-migration.md | 191 | ### Step 5: Visual Testing | COMMENT |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | specs/20260104T220141-inline-service-factories.md | 106 | export function createOpenaiTranscriptionService() { | CODE |
| LOW | specs/20260104T220141-inline-service-factories.md | 187 | export function createAutostartServiceDesktop() { | CODE |
| LOW | specs/20251227T000000-api-namespace-restructure.md | 141 | function createWorkspaceSyncPlugin(workspaceId: string, getDoc: () => Y.Doc | undefined) { | CODE |
| LOW | specs/20251213T231125-multi-device-tab-sync.md | 137 | export async function generateDefaultDeviceName(): Promise<string> { | CODE |
| LOW | …040000-machine-auth-adopt-better-auth-device-client.md | 109 | export function createMachineAuthTransport({ fetch = globalThis.fetch } = {}) { | CODE |
| LOW | …01T120000-simple-definition-first-workspace.handoff.md | 103 | export async function createWorkspaceDefinition(input: ...): Promise<WorkspaceDefinition> | CODE |
| LOW | …01T120000-simple-definition-first-workspace.handoff.md | 106 | export async function updateWorkspaceDefinition(id: string, updates: ...): Promise<WorkspaceDefinition | null> | CODE |
| LOW | …execution-prompt-device-actions-and-remote-dispatch.md | 52 | export function getOrCreateDeviceId(storage: SimpleStorage): string { | CODE |
| LOW | specs/20260319T140001-autumn-phase1-ai-chat-gating.md | 258 | export function createEnsureAutumnCustomer(autumn: Autumn) { | CODE |
| LOW | specs/20260525T220511-workspace-primitive-bundle.md | 204 | export function createHoneycrispWorkspace(opts: { keyring: () => Keyring }) { | CODE |
| LOW | specs/20260525T220511-workspace-primitive-bundle.md | 220 | export function createWhisperingWorkspace() { | CODE |
| LOW | specs/20251012T000000 recording-method-clarity.md | 164 | export function hasNavigatorLocalTranscriptionIssue({ | CODE |
| LOW | …260502T022408-browser-document-contract-clean-break.md | 159 | export function createEntryContentDocuments({ | CODE |
| LOW | …260502T022408-browser-document-contract-clean-break.md | 636 | export function createFileContentDocuments({ | CODE |
| LOW | …40200-dynamic-workspace-architecture-simplification.md | 95 | export function validateWorkspaceDefinition( | CODE |
| LOW | …260131T110000-auto-injected-version-discriminant-v2.md | 499 | function createVersionedUnionSchema( | CODE |
| LOW | …60315T070000-query-layer-switch-to-workspace-tables.md | 180 | function createWorkspaceRecordings() { | CODE |
| LOW | …-browser-document-family-identity-and-sync-topology.md | 59 | async function clearFileContentLocalData() { | CODE |
| LOW | specs/20260501T013208-auth-snapshot-api.md | 341 | function persistedStateSessionStorage( | CODE |
| LOW | specs/20260203T110000-static-workspace-registry.md | 124 | export async function loadStaticWorkspacesRegistry(): Promise<StaticWorkspacesRegistry> { | CODE |
| LOW | specs/20260203T110000-static-workspace-registry.md | 1060 | function createAddStaticWorkspaceDialogState() { | CODE |
| LOW | specs/20250118T192845-error-handling-pattern.md | 31 | export function createManualRecorderService() { | CODE |
| LOW | specs/20260506T010807-signed-in-owns-the-workspace.md | 129 | function createEntriesStateForFuji() { | CODE |
| LOW | specs/20260511T115110-remote-storage-control-plane.md | 333 | async function recordMeasurementIfActive( | CODE |
| LOW | specs/20260511T115110-remote-storage-control-plane.md | 350 | async function reactivateRoomForRecreate( | CODE |
| LOW | specs/20260522T220000-api-runtime-portability.md | 352 | export function createDurableObjectUpdateLog(sql: SqlStorage) { | CODE |
| LOW | …251214T180000-moonshine-addition-whispercpp-disable.md | 175 | export function createMoonshineTranscriptionService() { | CODE |
| LOW | …kills/error-handling/references/real-world-examples.md | 13 | async function getStreamForDeviceIdentifier( | CODE |
| LOW | .agents/skills/control-flow/SKILL.md | 31 | export async function checkFfmpegRecordingMethodCompatibility() { | CODE |
| LOW | …ces-layer/references/service-implementation-pattern.md | 77 | export function createNavigatorRecorderService(): RecorderService { | CODE |
| LOW | docs/patterns/factory-function-pattern.md | 103 | export function createAssistantPasswordUtils({ | CODE |
| LOW | docs/patterns/factory-function-pattern.md | 138 | export function createAssistantPasswordUtils({ | CODE |
| LOW | docs/articles/tokens-dont-belong-in-urls.md | 30 | function withBearerFromSubprotocol(original: Headers): Headers { | CODE |
| LOW | …-tauri-is-both-the-namespace-and-the-platform-check.md | 183 | export function syncIconWithRecorderState() { | CODE |
| LOW | …-tauri-is-both-the-namespace-and-the-platform-check.md | 209 | export function syncIconWithRecorderState(tauri: Tauri) { | CODE |
| LOW | …ctory-return-types-should-point-back-to-the-factory.md | 101 | export function createPlaintextMachineCredentialSecretStorage(): MachineCredentialSecretStorage { | CODE |
| LOW | …ctory-return-types-should-point-back-to-the-factory.md | 105 | export function createKeychainMachineCredentialSecretStorage(): MachineCredentialSecretStorage { | CODE |
| LOW | docs/articles/date-with-timezone-implementation.md | 112 | function normalizeToDateTimeWithTimezone( | CODE |
| LOW | …s/articles/svelte-function-bindings-readonly-stores.md | 92 | function rebuildOutputOptionsFromSelections() { | CODE |
| LOW | docs/articles/two-schema-libraries-on-purpose.md | 79 | export function standardSchemaToJsonSchema( | CODE |
| LOW | …163000-blob-store-factory-zoom-in-on-what-is-shared.md | 71 | function createFileSystemBlobStore(basePath: string): BlobStore { | CODE |
| LOW | docs/articles/sync-client-initialization.md | 432 | export function createIndexedDBPersistence({ ydoc, id }) { | CODE |
| LOW | …les/parameter-destructuring-over-body-destructuring.md | 91 | export function createDeepgramTranscriptionService({ | CODE |
| LOW | …rchitecture/dependency-injection-async-sync-pattern.md | 17 | function hasLocalTranscriptionCompatibilityIssue(): boolean { | CODE |
| LOW | …rchitecture/dependency-injection-async-sync-pattern.md | 85 | export function hasLocalTranscriptionCompatibilityIssue({ | CODE |
| LOW | packages/encryption/src/secrets.ts | 59 | function assertNoDuplicateVersions(rootKeyring: RootKeyring): void { | CODE |
| LOW | packages/encryption/src/keys.ts | 55 | export function assertEncryptionKeyVersion(version: number): void { | CODE |
| LOW | packages/encryption/src/crypto.test.ts | 33 | async function deriveWorkspaceKeyWithWebCrypto( | CODE |
| LOW | packages/ui/src/chart/chart-utils.ts | 21 | export function getPayloadConfigFromPayload( | CODE |
| LOW | packages/ui/src/emoji-picker/emoji-picker.svelte.ts | 237 | export function useEmojiPickerSkinToneSelector(props: EmojiPickerSkinProps) { | CODE |
| LOW | packages/svelte-utils/src/persisted-state.svelte.ts | 172 | function setAndPersist(nextValue: StandardSchemaV1.InferOutput<TSchema>) { | CODE |
| LOW | packages/svelte-utils/src/auth.svelte.ts | 82 | export function createSameOriginCookieAuth( | CODE |
| LOW | packages/svelte-utils/src/auth.svelte.ts | 131 | export function createHostedBrowserRedirectAuth({ | CODE |
| LOW | packages/auth/src/create-oauth-app-auth.ts | 222 | async function verifyPersistedAuthForNetwork( | CODE |
| LOW | packages/auth/src/persisted-auth-storage.ts | 61 | export function createWebStoragePersistedAuthStorage({ | CODE |
| LOW | packages/auth/src/persisted-auth-storage.ts | 88 | export function createSerializedPersistedAuthStorage({ | CODE |
| LOW | packages/auth/src/oauth-token-endpoints.ts | 105 | export async function refreshOAuthTokenWithEndpoint({ | CODE |
| LOW | packages/auth/src/oauth-token-endpoints.ts | 152 | export async function revokeOAuthRefreshTokenWithEndpoint({ | CODE |
| LOW | packages/auth/src/same-origin-cookie-auth.ts | 84 | export function createSameOriginCookieAuth({ | CODE |
| LOW | packages/auth/src/oauth-launchers/launchers.ts | 19 | export function createBrowserOAuthLauncher({ | CODE |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bunfig.toml | 1 | [install] | COMMENT |
| LOW | …ecs/20260524T021140-asset-visibility-and-client-sdk.md | 121 | COMMENT | |
| LOW | …ecs/20260524T021140-asset-visibility-and-client-sdk.md | 141 | // application/json: | COMMENT |
| LOW | …cs/20260702T211500-local-mail-phase-3-write-through.md | 141 | // db.ts: the fold, same semantics as applyHistoryBatch's labelPatch branch | COMMENT |
| LOW | .agents/skills/diagnose/scripts/hitl-loop.template.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | docs/articles/typescript-inference-pattern.ts | 1 | // ============================================================================ | COMMENT |
| LOW | docs/articles/typescript-inference-pattern.ts | 81 | // transformed is 'number' ✅ | COMMENT |
| LOW | docs/articles/typescript-inference-pattern.ts | 121 | }, | COMMENT |
| LOW | docs/articles/typescript-inference-pattern.ts | 201 | COMMENT | |
| LOW | scripts/generate-spec-history.ts | 1 | // Regenerates docs/spec-history.md from git history. | COMMENT |
| LOW | scripts/check-doc-hygiene.ts | 1 | // Doc-hygiene check. Deterministic, fixable-in-loop, CI-optional. | COMMENT |
| LOW | scripts/check-doc-hygiene.ts | 21 | // deleted, i.e. the work landed, so the ADR should be Accepted (or, if the | COMMENT |
| LOW | packages/svelte-utils/src/persisted-state.svelte.ts | 141 | function readFromStorage() { | COMMENT |
| LOW | packages/auth/src/instance-token-auth.ts | 101 | // client's synchronous boot from its persisted grant. The identity is knowable | COMMENT |
| LOW | …rkspace/specs/20260122T103629-namespaced-helper-api.md | 61 | // CALLABLE - PRIMARY ACCESS | COMMENT |
| LOW | …rkspace/specs/20260122T103629-namespaced-helper-api.md | 141 | ### KV Helper (`createKv`) | COMMENT |
| LOW | …ckages/workspace/src/config/epicenter-config-source.ts | 1 | export const EPICENTER_CONFIG_FILENAME = 'epicenter.config.ts'; | COMMENT |
| LOW | …pace/src/shared/y-keyvalue/y-keyvalue-lww-encrypted.ts | 441 | // 2. Ciphertext at a non-current version that IS in the keyring → | COMMENT |
| LOW | packages/workspace/src/document/table.ts | 1041 | // `current` is already the latest-version user-facing row (get() | COMMENT |
| LOW | packages/workspace/src/document/attach-indexed-db.ts | 41 | // `attach-local-storage-corrupt-load.test.ts` is the regression gate: it goes | COMMENT |
| LOW | packages/workspace/src/document/attach-indexed-db.ts | 81 | COMMENT | |
| LOW | …ace/src/document/materializer/markdown/git-autosave.ts | 1 | import { type FSWatcher, watch } from 'node:fs'; | COMMENT |
| LOW | packages/server/src/bun.ts | 41 | // `resolveBearerPrincipal` is the seam the attach mount closes over; the operator | COMMENT |
| LOW | packages/server/src/bun.ts | 61 | type HostDirectoryReader, | COMMENT |
| LOW | packages/server/src/bun.ts | 81 | // Merge several Bun `WebSocketHandler`s onto one `Bun.serve`, dispatching each | COMMENT |
| LOW | packages/server/src/server-bindings.ts | 41 | COMMENT | |
| LOW | packages/server/src/index.ts | 21 | // The AttachRelay (ADR-0115): the endpoint-addressed relay that forwards live | COMMENT |
| LOW | packages/server/src/index.ts | 41 | // / `assertStrongToken`) live in `@epicenter/auth`. | COMMENT |
| LOW | packages/server/src/index.ts | 61 | // `@epicenter/constants/oauth-seed` (beside `buildTrustedOAuthClients`, its | COMMENT |
| LOW | packages/server/src/index.ts | 81 | export { CloudAuthBindings, mountCloudAuth } from './mount-cloud-auth.js'; | COMMENT |
| LOW | packages/server/src/index.ts | 101 | // Parent app. Wires the portable per-request lifecycle (origin + trust, CORS, | COMMENT |
| LOW | packages/server/src/auth/create-auth.ts | 141 | } | COMMENT |
| LOW | packages/server/src/auth/create-auth.ts | 161 | // caller of `/auth/sign-in/social` is the API-hosted Svelte sign-in page, | COMMENT |
| LOW | packages/server/src/auth/create-auth.ts | 181 | ...(providers.github ? { github: providers.github } : {}), | COMMENT |
| LOW | packages/server/src/auth/create-auth.ts | 221 | // travel cross-site, and there is no cross-subdomain option by design | COMMENT |
| LOW | packages/server/src/auth/create-auth.ts | 241 | // | COMMENT |
| LOW | packages/server/src/auth/base-config.ts | 61 | // Email/password is intentionally disabled. The social IdPs are the only | COMMENT |
| LOW | packages/server/src/auth/base-config.ts | 81 | accountLinking: { | COMMENT |
| LOW | packages/server/src/auth/plugins.ts | 21 | buildTrustedOAuthClients(apiBaseURL).map((client) => client.clientId), | COMMENT |
| LOW | packages/server/src/auth/plugins.ts | 41 | // | COMMENT |
| LOW | packages/server/src/auth/plugins.ts | 61 | // @better-auth/oauth-provider 1.6.23 dist (2026-07-05 re-check on the | COMMENT |
| LOW | .github/workflows/deploy.cloudflare-preview.yml | 41 | uses: oven-sh/setup-bun@v2 | COMMENT |
| LOW | .github/workflows/deploy.cloudflare-preview.yml | 61 | # true` in its wrangler.jsonc. Each app uploads independently: a build or | COMMENT |
| LOW | .github/workflows/ci.format.yml | 41 | # Rejects specs that declare a terminal status (a finished spec should be | COMMENT |
| LOW | .github/workflows/ci.format.yml | 61 | # specs/20260524T153612-centralize-route-paths.md. | COMMENT |
| LOW | .github/workflows/deploy.cloudflare.yml | 41 | # binary and installs its own default wrangler instead. | COMMENT |
| LOW | .github/workflows/local-mail.gmail-drift.yml | 1 | # Gmail API drift check for apps/local-mail. | COMMENT |
| LOW | .github/workflows/ci.runtime-parity.yml | 1 | # Runtime-parity regression gate for the apps/api runtime port (ADR-0059). | COMMENT |
| LOW | apps/self-host/server.ts | 141 | // with the rooms backend (see the merged websocket handler below). | COMMENT |
| LOW | apps/self-host/server.ts | 181 | // One in-process coordinator for this instance; the env is unused (Bun | COMMENT |
| LOW | apps/self-host/worker/index.ts | 41 | // The one runtime-specific concern: bind this Worker's Durable Object room | COMMENT |
| LOW | apps/self-host/worker/index.ts | 81 | // Rooms resolves the bearer itself (WS-aware), so it takes the raw resolver. | COMMENT |
| LOW | apps/honeycrisp/src-tauri/src/keyring_storage.rs | 1 | //! Focused OS credential-store backing for the persisted OAuth grant. | COMMENT |
| LOW | apps/honeycrisp/src-tauri/src/keyring_storage.rs | 21 | // macOS scopes keychain ACLs to the app's code signature, so an | COMMENT |
| LOW | apps/honeycrisp/src/lib/editor/Editor.svelte | 341 | }, | COMMENT |
| LOW | apps/epicenter/src-tauri/tests/decode_fixtures.rs | 1 | //! Integration tests for the audio decoder against real container fixtures. | COMMENT |
| LOW | apps/epicenter/src-tauri/src/keyring_storage.rs | 1 | //! Focused OS credential-store backing for the persisted OAuth grant. | COMMENT |
| LOW | apps/epicenter/src-tauri/src/keyring_storage.rs | 21 | // macOS scopes keychain ACLs to the app's code signature, so an | COMMENT |
| LOW | apps/epicenter/src-tauri/src/download.rs | 1 | //! Cancelable background transfers. | COMMENT |
| LOW | apps/epicenter/src-tauri/src/command.rs | 1 | #[cfg(target_os = "macos")] | COMMENT |
| 76 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CLAUDE.md | 3 | # Claude-specific orchestration | COMMENT |
| MEDIUM | …cs/20260526T220000-tauri-specta-on-artifact-id-base.md | 282 | ### Wave 7 (Remove): Cleanup and guardrails | COMMENT |
| MEDIUM | specs/20260425T180002-orchestration-tracker.md | 1 | # Document-primitive rollout: orchestration tracker | COMMENT |
| MEDIUM | …0710T115550-epicenter-v8-desktop-release-transition.md | 122 | ### Phase 5: Retire transition scaffolding | COMMENT |
| MEDIUM | specs/20260514T220000-self-host-first-class.md | 702 | ### Wave 1: Adapter scaffolding (no behavior change) | COMMENT |
| MEDIUM | …gents/skills/collapse-pass/references/smell-catalog.md | 23 | ### Single-method dependency injection | COMMENT |
| MEDIUM | …h-a-dictionary-polish-and-a-portable-recipe-library.md | 78 | #### The Polish scaffold wraps the user instruction | COMMENT |
| MEDIUM | docs/articles/how-createsubscriber-works.md | 122 | No `$state` anywhere. The value (`this.#query.matches`) is read directly from the browser API on every access. `createSu | CODE |
| MEDIUM | …ges/workspace/src/config/load-epicenter-config.test.ts | 64 | // The `epicenter init` scaffold is comment-only, so its default export is | COMMENT |
| MEDIUM⚡ | …spering/src/lib/operations/build-system-prompt.test.ts | 35 | // The system-invariant scaffold is always present. | COMMENT |
| MEDIUM⚡ | …spering/src/lib/operations/build-system-prompt.test.ts | 40 | // Self-correction folds in as a scaffold rule, not a toggle. | COMMENT |
| MEDIUM⚡ | …spering/src/lib/operations/build-system-prompt.test.ts | 42 | // The user directive is embedded inside the scaffold, not replacing it. | COMMENT |
| MEDIUM⚡ | …spering/src/lib/operations/build-system-prompt.test.ts | 47 | // The guard lives in the scaffold, so it survives whatever the user (or a | COMMENT |
| MEDIUM | …spering/src/lib/operations/build-system-prompt.test.ts | 68 | // The scaffold comes first, then the term block. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | specs/20251113T000000-workspace-exports-pattern.md | 69 | client.workspaces.users.validateEmail("test@test.com") // Utility | CODE |
| LOW | specs/20260304T120000-hub-sidecar-architecture.md | 1236 | -d '{"email": "admin@example.com", "password": "...", "name": "Admin"}' | CODE |
| LOW | specs/20260224T141400-conversation-handle-refactor.md | 254 | - Options: (a) `active` returns `ConversationHandle | undefined` (caller must null-check), (b) Create a "placeholder" | CODE |
| LOW | …es/bearer-tokens-are-cookies-without-the-cookie-jar.md | 29 | email: "user@example.com", | CODE |
| LOW | docs/articles/proxies-vs-object-define-property.md | 21 | console.log(user.fullName); // "Jane Doe" | CODE |
| LOW | docs/articles/yjs-storage-efficiency/benchmark.ts | 104 | 'Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna ali | CODE |
| LOW | docs/articles/yjs-storage-efficiency/benchmark.ts | 104 | 'Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna ali | CODE |
| LOW⚡ | packages/workspace/src/__benchmarks__/helpers.ts | 68 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna a | CODE |
| LOW⚡ | packages/workspace/src/__benchmarks__/helpers.ts | 68 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna a | CODE |
| LOW | …n-in-migration/create-sign-in-migration.svelte.test.ts | 104 | Ok({ id: asPrincipalId('user-1'), email: 'user@example.com' }), | CODE |
| LOW | apps/local-mail/ui/src/lib/format.ts | 40 | /** Strip the address, keep the display name: "Jane Doe <j@x.com>" -> "Jane Doe". */ | COMMENT |
| LOW | apps/local-books/src/commands/demo.ts | 130 | const acme = { value: '1', name: 'Acme Corp' }; | CODE |
| LOW | apps/local-books/src/commands/demo.ts | 153 | customer('1', 'Acme Corp', 12000), | CODE |
| LOW | apps/api/worker/billing/policies.test.ts | 121 | email: 'user@example.com', | CODE |
| LOW | apps/api/worker/billing/policies.test.ts | 133 | principalEmail: 'user@example.com', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/server/src/room/core.test.ts | 175 | // A never ends on a "B gone" frame; the handoff was seamless. | COMMENT |
| MEDIUM⚡ | apps/local-mail/test-support/setup-copy.sh | 3 | # credentials, so the write harness can never contact real Google and never | COMMENT |
| MEDIUM⚡ | apps/local-mail/test-support/setup-copy.sh | 13 | # LM_TEST_DIR throwaway copy destination (default: /tmp/local-mail-harness) | COMMENT |
| MEDIUM | apps/local-mail/test-support/fingerprint.sh | 9 | # ...run the harness / smoke... | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/auth/src/node/oob-launcher.ts | 151 | print(authorizeUrl.toString()); | CODE |
| HIGH | packages/auth/src/node/oob-launcher.ts | 152 | print( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …kages/workspace/src/__benchmarks__/tombstones.bench.ts | 25 | // Step 1: Insert 5 heavy rows | COMMENT |
| LOW⚡ | …kages/workspace/src/__benchmarks__/tombstones.bench.ts | 31 | // Step 2: Delete 2 rows (doc-1 and doc-3) | COMMENT |
| LOW⚡ | …kages/workspace/src/__benchmarks__/tombstones.bench.ts | 36 | // Step 3: Add 2 new rows | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | specs/20260311T224500-changelog-release-strategy.md | 239 | - [OpenCode v1.2.24 release](https://github.com/anomalyco/opencode/releases/tag/v1.2.24): Example of AI-generated releas | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | apps/local-mail/test-support/setup-copy.sh | 2 | # Create a throwaway copy of the real Local Mail mirror with FORGED dummy | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .agents/skills/diagnose/scripts/hitl-loop.template.sh | 6 | # Usage: | COMMENT |
| LOW | apps/local-mail/test-support/fingerprint.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/posthog-reverse-proxy/src/index.js | 10 | async function handleRequest(request, ctx) { | CODE |