{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bef9c895beddbcb7", "name": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/triage.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/triage.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2b260c14ca94261", "name": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/slice.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/slice.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c640f9a7357f26e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-coverage.ts:272", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-coverage.ts:272"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe008b0ecd20b622", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-timing.ts:216", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-timing.ts:216"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fcc4676f42313a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-failures.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-failures.ts:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1db718e0214fe758", "name": "Stray `console.log` in TS/JS \u2014 scripts/release.ts:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/release.ts:179"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6e57268d63d3d0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/acp-spike.ts:768", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/acp-spike.ts:768"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f559ea67625079a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/build.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3864647186238295", "name": "Stray `console.log` in TS/JS \u2014 scripts/install-agent.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/install-agent.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-624bf692109e0d93", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__suppressed.fixture.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__suppressed.fixture.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-daec91b75b8d1871", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__clean.fixture.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__clean.fixture.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fae40d51cf34ba5", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__suppressed.fixture.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__suppressed.fixture.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a1dd8850c070ebf", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66da2c4e8c244fe0", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__safe.fixture.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__safe.fixture.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85cdb8a77e310a49", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/test-empty-catch__flagged.fixture.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/test-empty-catch__flagged.fixture.ts:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45b1936244acf0e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__flagged.fixture.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__flagged.fixture.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a33203e36fc03be7", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__flagged.fixture.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__flagged.fixture.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b0453f11c203911", "name": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/named-timeouts__clean.fixture.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/named-timeouts__clean.fixture.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be99e957b9534173", "name": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/index.ts:939", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/index.ts:939"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e06e8e58f34dbca", "name": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/alias-executor.spec.ts:255", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/alias-executor.spec.ts:255"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6056f76b8c1eccfd", "name": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/automation-dispatcher.ts:416", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/automation-dispatcher.ts:416"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a6a476f4902b0d3", "name": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/handlers/alias.spec.ts:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/handlers/alias.spec.ts:129"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94a2faa1ef4755d6", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/core/src/gh-client.ts:728", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/core/src/gh-client.ts:728"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f1078c641e2c75b", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/alias-bundle.spec.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/alias-bundle.spec.ts:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b908637f00b57762", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/output.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/output.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93ce8e522e435d11", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/main.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/main.ts:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d746402fb58d262c", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/alias-runner.ts:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/alias-runner.ts:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aad8db551df41ea1", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/get.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/get.ts:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72dc757652e74928", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/auth.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/auth.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3450e53924f2bc76", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent-grid.ts:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent-grid.ts:314"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8c00d7b0c0d3210", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.spec.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.spec.ts:177"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3932ecabfbb9df8", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/track.ts:264", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/track.ts:264"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a353c7abcad12e5", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/tty.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/tty.ts:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1095d926d5cc36c9", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/registry-cmd.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/registry-cmd.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e35e0d2092456b3d", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/import.ts:398", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/import.ts:398"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fe2ec6ce962d6da", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/worktree-commands.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/worktree-commands.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b20a1b38b2893aa4", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/export.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/export.ts:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db72b8696de4459c", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/version.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/version.ts:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79dfd099adb94214", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54f6501838a6413c", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/phase.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/phase.ts:112"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27d7ef6b4cc29619", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/claude.ts:580", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/claude.ts:580"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97d8cd5e23ff7a5e", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/completions.ts:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/completions.ts:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-949f4419b4d0e15b", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/vfs.ts:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/vfs.ts:199"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-912778d28228ad0a", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/spans.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/spans.ts:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-958c036b4be39fa6", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/telemetry.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/telemetry.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7becb1418e02647c", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/automation.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/automation.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bce40581ba81914b", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/sprint-stats.ts:411", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/sprint-stats.ts:411"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e47c228c1423db2c", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/note.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/note.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a373f7d38551f88", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/site.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/site.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e10ae92e1e7bb772", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/serve-kill.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/serve-kill.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99cbe52c4f597639", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/upgrade.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/upgrade.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf70bfd9b614288f", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/pr.ts:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/pr.ts:257"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca450a9e2a20c414", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/memory.ts:327", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/memory.ts:327"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5aa08eb089a7ff14", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent.ts:1626", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent.ts:1626"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-773b0d164786e999", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/gc.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/gc.ts:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a8077a651f65eaa", "name": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/dump.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/dump.ts:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-022ad89633bd678e", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/flaky-tests/mine-flaky-tests.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/flaky-tests/mine-flaky-tests.ts:207"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3885180f1e0726ee", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/extract-messages.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/extract-messages.ts:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca3bcc4095c5d549", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/recent-sessions.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/recent-sessions.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90f2def704725a7b", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/search-sessions.ts:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/search-sessions.ts:176"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e17f870f65779f2", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/diary/extract-sessions.ts:227", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/diary/extract-sessions.ts:227"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-986c300724062bb5", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate-triage.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate-triage.ts:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8edb9b812cd67d8", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/score.ts:473", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/score.ts:473"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-146857b943b04f6c", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/triage.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/triage.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-254d77a34db1f750", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/backfill.ts:423", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/backfill.ts:423"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e630f825e6579ced", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate.ts:531", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate.ts:531"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4505cfe403345137", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/embed.ts:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/embed.ts:137"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e64cc97759bb2dc", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/sprint-lessons/extract-sprint-sessions.ts:392", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/sprint-lessons/extract-sprint-sessions.ts:392"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fce37f795170dd54", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/rule-author/scripts/extract-pr.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/rule-author/scripts/extract-pr.ts:140"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffb8f1554e6d3d3f", "name": "Insecure pattern 'node_child_process' in docs/claude-patch/triage.ts:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in docs/claude-patch/triage.ts:23"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54e215cf6c406f7d", "name": "Insecure pattern 'node_child_process' in scripts/test-failure-log.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-failure-log.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1048fb020c9d01c2", "name": "Insecure pattern 'node_child_process' in scripts/agent-grid-detect.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/agent-grid-detect.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f2f0c69a7408ccd", "name": "Insecure pattern 'node_child_process' in scripts/coverage-diff.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/coverage-diff.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aef88725bdda7e52", "name": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75cf457b82350630", "name": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.ts:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02d1614fcc0e7ef8", "name": "Insecure pattern 'node_child_process' in scripts/_runner/ci-steps.ts:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/ci-steps.ts:26"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b40a1945aed2b057", "name": "Insecure pattern 'node_child_process' in scripts/_runner/phases-discovery.spec.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/phases-discovery.spec.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e94576c024197e0", "name": "Insecure pattern 'node_child_process' in scripts/_runner/runner.ts:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/runner.ts:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ca9aa634b2703b4", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-parser.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-parser.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c23cfbb0f97e45c2", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-writer.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-writer.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01c16e2c985345b5", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0addd787eceef60", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21ea92146e84c1fc", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8e28212727aecdf", "name": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.ts:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.ts:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5f309efd34414c4", "name": "Insecure pattern 'node_child_process' in packages/daemon/src/port-holder.ts:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/port-holder.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca2ae6161ec79805", "name": "Insecure pattern 'exec_used' in packages/daemon/src/index.ts:150", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/daemon/src/index.ts:150"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-684bf0d5e76a2630", "name": "Possible secret in packages/daemon/src/server-pool.spec.ts", "shortDescription": {"text": "Possible secret in packages/daemon/src/server-pool.spec.ts"}, "fullDescription": {"text": "Detected pattern matching aws_secret. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-206339cdb7c85842", "name": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab0db1b854968b1e", "name": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.ts:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7181be2afc7e8df", "name": "Insecure pattern 'exec_used' in packages/daemon/src/github/graphql-client.ts:244", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/daemon/src/github/graphql-client.ts:244"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1580db4f502964ed", "name": "Insecure pattern 'private_key_in_repo' in packages/daemon/src/claude-session/binary-resolver.spec.ts:13", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in packages/daemon/src/claude-session/binary-resolver.spec.ts:13"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4999899d11e5925c", "name": "Insecure pattern 'new_function_used' in packages/daemon/src/site/seeds.spec.ts:137", "shortDescription": {"text": "Insecure pattern 'new_function_used' in packages/daemon/src/site/seeds.spec.ts:137"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb6483f84d8e8606", "name": "Insecure pattern 'new_function_used' in packages/daemon/src/site/browser/playwright.ts:424", "shortDescription": {"text": "Insecure pattern 'new_function_used' in packages/daemon/src/site/browser/playwright.ts:424"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04aeaa6a8b53c758", "name": "Possible secret in packages/core/src/sanitizer.spec.ts", "shortDescription": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-10cde080c576e0fd", "name": "Insecure pattern 'private_key_in_repo' in packages/core/src/sanitizer.spec.ts:296", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in packages/core/src/sanitizer.spec.ts:296"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-361350c27c8648a7", "name": "Insecure pattern 'exec_used' in packages/core/src/git.ts:30", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/core/src/git.ts:30"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3540a980f779385", "name": "Insecure pattern 'exec_used' in packages/core/src/branch-guard.ts:39", "shortDescription": {"text": "Insecure pattern 'exec_used' in packages/core/src/branch-guard.ts:39"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-725ed6889a2d35cd", "name": "Possible secret in packages/core/src/telemetry.ts", "shortDescription": {"text": "Possible secret in packages/core/src/telemetry.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-688831ede2aacca4", "name": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-376d07156d3b842e", "name": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f95128e9d465cb9f", "name": "Possible secret in packages/command/src/daemon-lifecycle.spec.ts", "shortDescription": {"text": "Possible secret in packages/command/src/daemon-lifecycle.spec.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-379397e727b6ab91", "name": "Insecure pattern 'node_child_process' in packages/command/src/file-read.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/command/src/file-read.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44336be0be42943d", "name": "Insecure pattern 'node_child_process' in packages/command/src/commands/alias.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/command/src/commands/alias.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e77c0e5d3127afa0", "name": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d016d89fb1ce13d", "name": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.spec.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.spec.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bdf1eedebabcf701", "name": "Insecure pattern 'node_child_process' in .claude/skills/estimate/triage.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/skills/estimate/triage.ts:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a026bc403785e37", "name": "Insecure pattern 'node_child_process' in .claude/skills/estimate/backfill.ts:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/skills/estimate/backfill.ts:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b959d26d18381e4", "name": "Insecure pattern 'node_child_process' in .claude/skills/sprint-lessons/extract-sprint-sessions.ts:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/skills/sprint-lessons/extract-sprint-sessions.ts:28"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75cac5fbaf7ea6fb", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e53453fef8a3ee1", "name": "Very large file: packages/daemon/src/ipc-server.spec.ts (4440 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/ipc-server.spec.ts (4440 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65a6932515a56465", "name": "Very large file: packages/daemon/src/index.ts (1444 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/index.ts (1444 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80d8a1e01aa939a6", "name": "Very large file: packages/daemon/src/claude-server.spec.ts (1895 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/claude-server.spec.ts (1895 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75c77d1f74a4ca58", "name": "Very large file: packages/daemon/src/server-pool.spec.ts (1836 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/server-pool.spec.ts (1836 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c072992f0dee641", "name": "Very large file: packages/daemon/src/work-items-server.spec.ts (1534 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/work-items-server.spec.ts (1534 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97047a03ec57f021", "name": "Very large file: packages/daemon/src/claude-session/ws-server.spec.ts (5442 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/claude-session/ws-server.spec.ts (5442 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f11e2e7b54b14c7d", "name": "Very large file: packages/daemon/src/claude-session/ws-server.ts (2967 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/claude-session/ws-server.ts (2967 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c1c08e776379205", "name": "Very large file: packages/daemon/src/db/state.spec.ts (2425 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/db/state.spec.ts (2425 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-feb4a9d5109e555b", "name": "Very large file: packages/daemon/src/db/state.ts (1976 lines)", "shortDescription": {"text": "Very large file: packages/daemon/src/db/state.ts (1976 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55c009aebb03e5f9", "name": "Very large file: packages/command/src/commands/phase.spec.ts (3710 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/phase.spec.ts (3710 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0978166ab162cab6", "name": "Very large file: packages/command/src/commands/phase.ts (2120 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/phase.ts (2120 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a42a47c52911e0ab", "name": "Very large file: packages/command/src/commands/claude.ts (2283 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/claude.ts (2283 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb080eb7f937d6b0", "name": "Very large file: packages/command/src/commands/agent.spec.ts (2492 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/agent.spec.ts (2492 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a47415436e10ecbf", "name": "Very large file: packages/command/src/commands/agent.ts (1969 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/agent.ts (1969 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be65135413e0946f", "name": "Very large file: packages/command/src/commands/claude.spec.ts (5750 lines)", "shortDescription": {"text": "Very large file: packages/command/src/commands/claude.spec.ts (5750 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "89 test file(s) for 895 source file(s) (ratio 0.10). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e45f130a8587532e", "name": "75 TODO/FIXME markers", "shortDescription": {"text": "75 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12effcd1fb7331db", "name": "Node manifest has dependencies but no lockfile: packages/opencode/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/opencode/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9847fe1cabc60190", "name": "Node manifest has dependencies but no lockfile: packages/clone/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/clone/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c41602e869b4ca40", "name": "Node manifest has dependencies but no lockfile: packages/acp/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/acp/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6d2cff9e5618917", "name": "Node manifest has dependencies but no lockfile: packages/daemon/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/daemon/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44ea7c2f48702506", "name": "Node manifest has dependencies but no lockfile: packages/codex/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/codex/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28e92806c0db3cd2", "name": "Node manifest has dependencies but no lockfile: packages/core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9b718195fda2ba4", "name": "Node manifest has dependencies but no lockfile: packages/control/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/control/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c9b2b0943d09080", "name": "Node manifest has dependencies but no lockfile: packages/command/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/command/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-754d5d08f16077f4", "name": "Node manifest has dependencies but no lockfile: agent-grid/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: agent-grid/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 356 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 107 placeholder/mock markers across 35 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c983c9df695ba133", "name": "Agent authority lacks a verifier contract: packages/daemon/src/mock-session/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: packages/daemon/src/mock-session/CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c17253b22980f855", "name": "Agent authority lacks a verifier contract: .claude/commands/mine-rules.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/mine-rules.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78cfcf6bec207768", "name": "Agent authority lacks a verifier contract: .claude/sprints/sprint-24.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/sprints/sprint-24.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bccfa3e337b6a7cc", "name": "Agent instruction/config may expose a secret: .claude/diary/20260312.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/diary/20260312.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02ec6268858c551c", "name": "Agent authority lacks a verifier contract: .claude/memory/project_sprites_remote_orchestration.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/project_sprites_remote_orchestration.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bc1ae58d2ad0aad", "name": "Agent authority lacks a verifier contract: .claude/memory/feedback_schedulewakeup_orchestration.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_schedulewakeup_orchestration.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-319e19aa26986f94", "name": "Agent authority lacks a verifier contract: .claude/memory/feedback_no_rebase_sprint_branch.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_no_rebase_sprint_branch.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1375d552f2853d9b", "name": "Agent authority lacks a verifier contract: .claude/memory/feedback_sprint_bulk_and_cascade.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_sprint_bulk_and_cascade.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b61a35897ff5c280", "name": "Agent authority lacks a verifier contract: .claude/memory/project_sprint_operator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/project_sprint_operator.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ff0a3152d47858e", "name": "Agent instruction/config may expose a secret: .claude/memory/feedback_quota_status_staleness.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/memory/feedback_quota_status_staleness.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c96198d07b8491e9", "name": "Agent instruction/config may expose a secret: .claude/memory/feedback_phase_repair_to_qa.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/memory/feedback_phase_repair_to_qa.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a19c7049a36422a", "name": "Agent authority lacks a verifier contract: .claude/memory/feedback_phase_repair_to_qa.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_phase_repair_to_qa.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95a79425e7cabd87", "name": "Agent authority lacks a verifier contract: .claude/memory/feedback_meta_issue_planning_guard.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_meta_issue_planning_guard.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a1110c6f41fe0e4a", "name": "Agent authority lacks a verifier contract: .claude/memory/user_cache_ttl.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/memory/user_cache_ttl.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c38390b3fc07a72", "name": "Agent authority lacks a verifier contract: .claude/skills/diary/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/diary/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ec8bc2420dd9c94", "name": "Agent authority lacks a verifier contract: .claude/skills/estimate/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/estimate/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a0900ef55f137c71", "name": "Agent authority lacks a verifier contract: .claude/skills/why/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03659fba88a3b4ea", "name": "Agent authority lacks a verifier contract: .claude/skills/why/references/plan.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/references/plan.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b504cab0e77a32f", "name": "Agent authority lacks a verifier contract: .claude/skills/why/references/why-workflow.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/references/why-workflow.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6867c59ec5e28857", "name": "Agent authority lacks a verifier contract: .claude/skills/sprint/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/sprint/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79ff1e433e3fe129", "name": "Agent authority lacks a verifier contract: .claude/skills/sprint-lessons/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/sprint-lessons/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20dfe5bdad0d53de", "name": "Agent authority lacks a verifier contract: skill/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skill/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac948f42ae2616ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/monitor-alias.integration.spec.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/monitor-alias.integration.spec.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4af4589de3161470", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/session-result-sse.integration.spec.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/session-result-sse.integration.spec.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f270b620ff85a33", "name": "Commented-code block (6 lines) in test/harness.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in test/harness.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f12014867c10b842", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/harness.ts:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/harness.ts:275"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa4db68002dcfc29", "name": "Commented-code block (5 lines) in test/daemon-integration.spec.ts:487", "shortDescription": {"text": "Commented-code block (5 lines) in test/daemon-integration.spec.ts:487"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b57cb90937a76de", "name": "Commented-code block (5 lines) in test/transport-errors.spec.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in test/transport-errors.spec.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e47368ef9b57046f", "name": "Commented-code block (6 lines) in test/mock-claude.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in test/mock-claude.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47e8802df015d3ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/event-filter.integration.spec.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/event-filter.integration.spec.ts:99"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3cce52ee3a1ffaaf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 test/http-401-server.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/http-401-server.ts:9"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-939641bf04f3d615", "name": "Commented-code block (5 lines) in scripts/check-coverage.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-coverage.ts:218"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-363b7ccae281d304", "name": "Commented-code block (5 lines) in scripts/doing-it-wrong.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/doing-it-wrong.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-977fe44a9d19df16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/opencode-spike.ts:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/opencode-spike.ts:171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4bbe48c8ed55517", "name": "Commented-code block (6 lines) in scripts/daemon-workers.spec.ts:42", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/daemon-workers.spec.ts:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff402a85236bc326", "name": "Commented-code block (10 lines) in scripts/build.ts:138", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/build.ts:138"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd7189a4b89fb2b1", "name": "Commented-code block (6 lines) in scripts/am-i-done.ts:143", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/am-i-done.ts:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed455179cd8b90a5", "name": "Commented-code block (5 lines) in scripts/rules/no-import-cycles.rule.spec.ts:228", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rules/no-import-cycles.rule.spec.ts:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3685a95d01e9e735", "name": "Commented-code block (5 lines) in scripts/rules/no-raw-path-handling.rule.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rules/no-raw-path-handling.rule.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4db5be16c800719d", "name": "Commented-code block (5 lines) in scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:71", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57740a8b9581ca06", "name": "Commented-code block (8 lines) in scripts/rules/_engine/import-graph.ts:189", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/rules/_engine/import-graph.ts:189"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfedf768ff1267ef", "name": "Commented-code block (5 lines) in scripts/_runner/ci-steps.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/_runner/ci-steps.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e800637828526a1", "name": "Commented-code block (6 lines) in scripts/_runner/context.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/_runner/context.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-baa8f64d0a44dfdd", "name": "Commented-code block (8 lines) in scripts/_runner/phases-discovery.spec.ts:15", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/_runner/phases-discovery.spec.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99445e680b58656b", "name": "Commented-code block (5 lines) in scripts/_runner/ci-steps.spec.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/_runner/ci-steps.spec.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23ff12ca94d059a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-sse.spec.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-sse.spec.ts:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40c624e5c4032b4b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-client.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-client.ts:4"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-180bd4c04d7b56d3", "name": "Commented-code block (5 lines) in packages/opencode/src/opencode-permission-adapter.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in packages/opencode/src/opencode-permission-adapter.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-728374e9efccbd03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/provider.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/provider.ts:97"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-602b7ba9a65d4d52", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.ts:220", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.ts:220"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4071a42a625e6542", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.ts:182", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.ts:182"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa0c8232dce51f4d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.spec.ts:481", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.spec.ts:481"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9347a949fc8aebe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.ts:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.ts:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac3005b1b14776a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.spec.ts:266", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.spec.ts:266"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf6399ab621600d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.ts:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.ts:163"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-13cc8b14ce7bb02e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.spec.ts:299", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.spec.ts:299"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84bb9b2b4aed19cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.spec.ts:335", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.spec.ts:335"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0be1f703caeca5d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/pull.ts:285", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/pull.ts:285"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9d50cd9db4cf9d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/clone.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/clone.ts:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa3520960ab67b7c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.ts:129"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7879a96ddafe651", "name": "Commented-code block (13 lines) in packages/clone/src/engine/__tests__/remote-helper.integration.spec.ts:374", "shortDescription": {"text": "Commented-code block (13 lines) in packages/clone/src/engine/__tests__/remote-helper.integration.spec.ts:374"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52e183731860b59c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.spec.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.spec.ts:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0722665bd1b6a43f", "name": "Commented-code block (6 lines) in packages/acp/src/acp-session.ts:556", "shortDescription": {"text": "Commented-code block (6 lines) in packages/acp/src/acp-session.ts:556"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c2f8411500ab64e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/open-event-stream.spec.ts:234", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/open-event-stream.spec.ts:234"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a25f58c16b668be", "name": "Commented-code block (5 lines) in packages/daemon/src/claude-session-worker.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/claude-session-worker.ts:218"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4bc9336b069db0a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.spec.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.spec.ts:120"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f271f6d2a2327163", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/alias-state.spec.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/alias-state.spec.ts:88"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-448f4830d159ec5a", "name": "Commented-code block (6 lines) in packages/daemon/src/codex-server.spec.ts:358", "shortDescription": {"text": "Commented-code block (6 lines) in packages/daemon/src/codex-server.spec.ts:358"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53d4d7d35f5c0d3f", "name": "Commented-code block (5 lines) in packages/daemon/src/server-pool.ts:364", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/server-pool.ts:364"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3fc44aab0c3e9078", "name": "Commented-code block (5 lines) in packages/daemon/src/index.ts:1255", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/index.ts:1255"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4694eaf01c1439d", "name": "Commented-code block (5 lines) in packages/daemon/src/work-items-server.ts:431", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/work-items-server.ts:431"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b868dcafe9464a3", "name": "Commented-code block (5 lines) in packages/daemon/src/ipc-server.ts:451", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/ipc-server.ts:451"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f1d60a7b98cea1b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.ts:194", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.ts:194"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-200997a1a26325df", "name": "Commented-code block (5 lines) in packages/daemon/src/mock-server.spec.ts:800", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/mock-server.spec.ts:800"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-594a41065216216f", "name": "Legacy-named symbol `closeOld` in packages/daemon/src/server-pool.spec.ts:1475", "shortDescription": {"text": "Legacy-named symbol `closeOld` in packages/daemon/src/server-pool.spec.ts:1475"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6429002303fb5f5", "name": "Commented-code block (7 lines) in packages/daemon/src/server-pool.spec.ts:1780", "shortDescription": {"text": "Commented-code block (7 lines) in packages/daemon/src/server-pool.spec.ts:1780"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a0119907bc612d5", "name": "Commented-code block (9 lines) in packages/daemon/src/tls/self-signed.spec.ts:156", "shortDescription": {"text": "Commented-code block (9 lines) in packages/daemon/src/tls/self-signed.spec.ts:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-004417cdf878df1f", "name": "Commented-code block (5 lines) in packages/daemon/src/auth/oauth-provider.ts:85", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/auth/oauth-provider.ts:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-202ab1e61cae8f03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.spec.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.spec.ts:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5add5d021ba7a467", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.ts:55"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-31520f3909db1957", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/claude-session/ws-server.spec.ts:950", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/claude-session/ws-server.spec.ts:950"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af412685fbbce669", "name": "Commented-code block (6 lines) in packages/daemon/src/claude-session/ws-server.ts:518", "shortDescription": {"text": "Commented-code block (6 lines) in packages/daemon/src/claude-session/ws-server.ts:518"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2c8f1686c29bc4b", "name": "Commented-code block (7 lines) in packages/daemon/src/claude-session/binary-resolver.ts:126", "shortDescription": {"text": "Commented-code block (7 lines) in packages/daemon/src/claude-session/binary-resolver.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fa523e5e7a2030d", "name": "Commented-code block (6 lines) in packages/daemon/src/site/browser/resolve-playwright.spec.ts:209", "shortDescription": {"text": "Commented-code block (6 lines) in packages/daemon/src/site/browser/resolve-playwright.spec.ts:209"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-488948247f70c3e9", "name": "Commented-code block (5 lines) in packages/daemon/src/db/state.ts:1036", "shortDescription": {"text": "Commented-code block (5 lines) in packages/daemon/src/db/state.ts:1036"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d9c32feea12723e", "name": "Commented-code block (5 lines) in packages/codex/src/codex-session.ts:373", "shortDescription": {"text": "Commented-code block (5 lines) in packages/codex/src/codex-session.ts:373"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3bab61176f454ec", "name": "Commented-code block (6 lines) in packages/core/src/phase-transition.ts:196", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/phase-transition.ts:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60f904c60f5affa2", "name": "Commented-code block (6 lines) in packages/core/src/alias-bundle.ts:182", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/alias-bundle.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2efcdba73db97759", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/gh-client.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/gh-client.ts:4"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c28435ffcc84ee2a", "name": "Commented-code block (5 lines) in packages/core/src/alias-bundle-core.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/alias-bundle-core.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-84c7cb010279abc8", "name": "Commented-code block (5 lines) in packages/core/src/subprocess.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/subprocess.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9fa59a1bcc16aec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/ipc-client.ts:166", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/ipc-client.ts:166"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e3deb481eee1f7e", "name": "Commented-code block (7 lines) in packages/core/src/claude-patch/strategies.ts:157", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/claude-patch/strategies.ts:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c46cc1f828b67bb6", "name": "Commented-code block (6 lines) in packages/core/src/claude-patch/patcher.spec.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/claude-patch/patcher.spec.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3315a8d8708d61f3", "name": "Commented-code block (5 lines) in packages/command/src/daemon-lifecycle.spec.ts:586", "shortDescription": {"text": "Commented-code block (5 lines) in packages/command/src/daemon-lifecycle.spec.ts:586"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0c059b91e84d055", "name": "Legacy-named symbol `feedback_old` in packages/command/src/commands/memory.spec.ts:136", "shortDescription": {"text": "Legacy-named symbol `feedback_old` in packages/command/src/commands/memory.spec.ts:136"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d4ae31c10d85d6d", "name": "Commented-code block (6 lines) in packages/command/src/commands/phase.ts:731", "shortDescription": {"text": "Commented-code block (6 lines) in packages/command/src/commands/phase.ts:731"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a94002902b32596c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/vfs.ts:347", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/vfs.ts:347"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5674ed51e96d56fd", "name": "Commented-code block (5 lines) in packages/command/src/commands/agent.spec.ts:323", "shortDescription": {"text": "Commented-code block (5 lines) in packages/command/src/commands/agent.spec.ts:323"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6de3d3f69fc9039", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/upgrade.ts:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/upgrade.ts:148"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5aed368d90eb3b69", "name": "Commented-code block (5 lines) in packages/command/src/commands/claude.spec.ts:158", "shortDescription": {"text": "Commented-code block (5 lines) in packages/command/src/commands/claude.spec.ts:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8f1443ae0bcf419", "name": "Commented-code block (6 lines) in packages/command/src/commands/gc.ts:244", "shortDescription": {"text": "Commented-code block (6 lines) in packages/command/src/commands/gc.ts:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b000de5be557fef3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/registry/client.ts:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/registry/client.ts:5"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe90452eed8c7326", "name": "Commented-code block (6 lines) in agent-grid/src/replay.spec.ts:710", "shortDescription": {"text": "Commented-code block (6 lines) in agent-grid/src/replay.spec.ts:710"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-357a86ae0fb8efae", "name": "Commented-code block (10 lines) in agent-grid/src/replay.ts:407", "shortDescription": {"text": "Commented-code block (10 lines) in agent-grid/src/replay.ts:407"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5cb92bcc62f05a56", "name": "Commented-code block (5 lines) in .claude/phases/qa-fn.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/phases/qa-fn.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b72ea5a2832ab92", "name": "Commented-code block (6 lines) in .claude/phases/done-fn.ts:119", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/phases/done-fn.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbbb2d195215571b", "name": "Commented-code block (9 lines) in .claude/phases/review-fn.ts:8", "shortDescription": {"text": "Commented-code block (9 lines) in .claude/phases/review-fn.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3293a59a2480b64", "name": "Commented-code block (7 lines) in .claude/phases/phase-types.ts:95", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/phases/phase-types.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f50605abb453f5aa", "name": "Commented-code block (8 lines) in .claude/workflows/sprint-lessons.js:14", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/workflows/sprint-lessons.js:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4a312682328c19c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/skills/estimate/embed.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/skills/estimate/embed.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa02c7277e3f1d0a", "name": "Commented-code block (8 lines) in .claude/skills/why/why-workflow.js:11", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/skills/why/why-workflow.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-caa68d995b794f69", "name": "Dangling fetch: GET http://localhost/events (test/session-result-sse.integration.spec.ts:51)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (test/session-result-sse.integration.spec.ts:51)"}, "fullDescription": {"text": "`test/session-result-sse.integration.spec.ts:51` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28e524fc3336934f", "name": "Dangling fetch: POST http://localhost/rpc (test/harness.ts:275)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (test/harness.ts:275)"}, "fullDescription": {"text": "`test/harness.ts:275` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad3617d301e28c97", "name": "Dangling fetch: GET http://localhost:${assignedPort}/ (scripts/rules/fixtures/no-hardcoded-test-port__clean.fixture.ts:2", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${assignedPort}/ (scripts/rules/fixtures/no-hardcoded-test-port__clean.fixture.ts:26)"}, "fullDescription": {"text": "`scripts/rules/fixtures/no-hardcoded-test-port__clean.fixture.ts:26` calls `GET http://localhost:${assignedPort}/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a775de9357273379", "name": "Dangling fetch: GET http://localhost:${server.port}/ (scripts/bun-segfault-repro/worker.ts:28)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${server.port}/ (scripts/bun-segfault-repro/worker.ts:28)"}, "fullDescription": {"text": "`scripts/bun-segfault-repro/worker.ts:28` calls `GET http://localhost:${server.port}/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b05ad4900a59c8e", "name": "Dangling fetch: GET http://localhost${path} (packages/daemon/src/ipc-server.spec.ts:120)", "shortDescription": {"text": "Dangling fetch: GET http://localhost${path} (packages/daemon/src/ipc-server.spec.ts:120)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:120` calls `GET http://localhost${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e617de95f1f2d18", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:211)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:211)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:211` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3a0007e2ffec075", "name": "Dangling fetch: GET http://localhost/logs (packages/daemon/src/ipc-server.spec.ts:444)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/logs (packages/daemon/src/ipc-server.spec.ts:444)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:444` calls `GET http://localhost/logs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55654e5b840caaa6", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:859)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:859)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:859` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d71f9ca16522d552", "name": "Dangling fetch: GET http://localhost/metrics (packages/daemon/src/ipc-server.spec.ts:1296)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/metrics (packages/daemon/src/ipc-server.spec.ts:1296)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:1296` calls `GET http://localhost/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1185bd45347b395", "name": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=0 (packages/daemon/src/ipc-server.spec.ts:2018)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=0 (packages/daemon/src/ipc-server.spec.ts:2018)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2018` calls `GET http://localhost/logs?daemon=true&lines=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86c1049460ae1031", "name": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=10 (packages/daemon/src/ipc-server.spec.ts:2039)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=10 (packages/daemon/src/ipc-server.spec.ts:2039)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2039` calls `GET http://localhost/logs?daemon=true&lines=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b816c0fca53c33f3", "name": "Dangling fetch: GET http://localhost/logs?server=myserver&lines=5 (packages/daemon/src/ipc-server.spec.ts:2077)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/logs?server=myserver&lines=5 (packages/daemon/src/ipc-server.spec.ts:2077)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2077` calls `GET http://localhost/logs?server=myserver&lines=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5a68bbf4cc0783f", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2287)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2287)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2287` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fafd8f16d5db7f49", "name": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:2300)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:2300)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2300` calls `GET http://localhost/events?pr=${encodeURIComponent(bad)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f64e3179620a00e", "name": "Dangling fetch: GET http://localhost/events?since=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:231", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:2313)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2313` calls `GET http://localhost/events?since=${encodeURIComponent(bad)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25579bc616b3e3c1", "name": "Dangling fetch: GET http://localhost/events?since=${cursor} (packages/daemon/src/ipc-server.spec.ts:2328)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=${cursor} (packages/daemon/src/ipc-server.spec.ts:2328)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2328` calls `GET http://localhost/events?since=${cursor}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc5c8c9c2044fabe", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2342)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2342)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2342` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30c74aa3cd1154c2", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2387)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2387)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2387` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c809dd2f9afefe1", "name": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2422)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2422)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2422` calls `GET http://localhost/events?responseTail=s1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-270fb5f31ff3395a", "name": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:2455)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:2455)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2455` calls `GET http://localhost/events?responseTail=other-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09c05432c1ce81b6", "name": "Dangling fetch: GET http://localhost/events?subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:2490)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:2490)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2490` calls `GET http://localhost/events?subscribe=work_item` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca4d47a9fd8b8484", "name": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:2538)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:2538)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2538` calls `GET http://localhost/events?since=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26a0a696e6ca5f2d", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2587)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2587)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2587` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a59d002255ee869c", "name": "Dangling fetch: GET http://localhost/events?subscribe=mail&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2644)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?subscribe=mail&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2644)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2644` calls `GET http://localhost/events?subscribe=mail&responseTail=s1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-492b4ee8783bf422", "name": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2693)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2693)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2693` calls `GET http://localhost/events?since=2` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-674b972d8b0b4aff", "name": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2763)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2763)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2763` calls `GET http://localhost/events?since=2` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afa26dadfb8fe77e", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2831)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2831)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2831` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e47e08d79f23143", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2881)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2881)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2881` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5648ca8b69f26d4f", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2900)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2900)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2900` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-796f685345d6dc24", "name": "Dangling fetch: GET http://localhost/events?type=pr.* (packages/daemon/src/ipc-server.spec.ts:2929)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?type=pr.* (packages/daemon/src/ipc-server.spec.ts:2929)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:2929` calls `GET http://localhost/events?type=pr.*` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5056468939f49e7", "name": "Dangling fetch: GET http://localhost/events?phase=review (packages/daemon/src/ipc-server.spec.ts:3046)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?phase=review (packages/daemon/src/ipc-server.spec.ts:3046)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3046` calls `GET http://localhost/events?phase=review` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aff6f945f24c2251", "name": "Dangling fetch: GET http://localhost/events?subscribe=work_item&pr=42 (packages/daemon/src/ipc-server.spec.ts:3093)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?subscribe=work_item&pr=42 (packages/daemon/src/ipc-server.spec.ts:3093)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3093` calls `GET http://localhost/events?subscribe=work_item&pr=42` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38d431bc8f32e157", "name": "Dangling fetch: GET http://localhost/events?since=0&subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:3141)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0&subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:3141)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3141` calls `GET http://localhost/events?since=0&subscribe=work_item` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ac4dbb5da205fad", "name": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3183)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3183)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3183` calls `GET http://localhost/events?since=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eed8c5ce297cc6ef", "name": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3225)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3225)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3225` calls `GET http://localhost/events?since=0&responseTail=s1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4309db693ed24914", "name": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3267)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3267` calls `GET http://localhost/events?since=0&responseTail=other-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1b518c48a180d4f", "name": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3330)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3330)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3330` calls `GET http://localhost/events?since=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4174d90c5b77430", "name": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3458)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3458)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3458` calls `GET http://localhost/events?since=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93c6160768628560", "name": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:3488)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:3488)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3488` calls `GET http://localhost/events?pr=${encodeURIComponent(bad)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d69072a3eaf6bb94", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3502)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3502)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3502` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0eda85082d0ba4f7", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3518)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3518)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3518` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3006b2be909141f3", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3564)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3564)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3564` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-062fb5d493a943bc", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3611)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3611)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3611` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64d3f840b90ba9f8", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3653)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3653)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3653` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3d5c3feb12b8be9", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3677)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3677)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3677` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35be7d1d9c669036", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3736)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3736)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3736` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6818577970b445f7", "name": "Dangling fetch: GET http://localhost/events?subscribe=session (packages/daemon/src/ipc-server.spec.ts:3817)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?subscribe=session (packages/daemon/src/ipc-server.spec.ts:3817)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3817` calls `GET http://localhost/events?subscribe=session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5938e9c57529f93d", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3862)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3862)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3862` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51e8c97e13e6b28f", "name": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3897)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3897)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3897` calls `GET http://localhost/events?responseTail=s1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4cabf707a793f6bc", "name": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3932)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3932)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3932` calls `GET http://localhost/events?responseTail=other-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc5f191097ea8159", "name": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3979)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3979)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:3979` calls `GET http://localhost/events?since=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ac083bc64684b61", "name": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:4021)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:4021)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4021` calls `GET http://localhost/events?since=0&responseTail=s1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b14abe0df9a65df9", "name": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:4", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:4063)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4063` calls `GET http://localhost/events?since=0&responseTail=other-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c21e4213d015933", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4101)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4101)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4101` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7dff403f863c979c", "name": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4128)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4128)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4128` calls `GET http://localhost/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb26cd4c3782b8ee", "name": "Dangling fetch: GET http://localhost/logs?daemon=true (packages/daemon/src/ipc-server.spec.ts:4178)", "shortDescription": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true (packages/daemon/src/ipc-server.spec.ts:4178)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4178` calls `GET http://localhost/logs?daemon=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-225c90492aa67946", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4257)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4257)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4257` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e492894b48a3a11a", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4270)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4270)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4270` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-adf22ac4485ef2b2", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4313)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4313)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.spec.ts:4313` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0725ebae2f1b3bf", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/alias-state.spec.ts:88)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/alias-state.spec.ts:88)"}, "fullDescription": {"text": "`packages/daemon/src/alias-state.spec.ts:88` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08d3e9a4054a8467", "name": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.ts:71)", "shortDescription": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.ts:71)"}, "fullDescription": {"text": "`packages/daemon/src/ipc-server.ts:71` calls `POST http://localhost/rpc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost/rpc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32e2836da8603380", "name": "Dangling fetch: GET http://localhost:${port}/callback?code=again (packages/daemon/src/auth/callback-server.spec.ts:129)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${port}/callback?code=again (packages/daemon/src/auth/callback-server.spec.ts:129)"}, "fullDescription": {"text": "`packages/daemon/src/auth/callback-server.spec.ts:129` calls `GET http://localhost:${port}/callback?code=again` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54600ce45cdbc322", "name": "Dangling fetch: GET http://localhost:${port}/session/nonexistent (packages/daemon/src/claude-session/ws-server.spec.ts:9", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${port}/session/nonexistent (packages/daemon/src/claude-session/ws-server.spec.ts:950)"}, "fullDescription": {"text": "`packages/daemon/src/claude-session/ws-server.spec.ts:950` calls `GET http://localhost:${port}/session/nonexistent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/session/nonexistent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-456c5650e91b65a1", "name": "Dangling fetch: GET http://localhost:${port}/invalid (packages/daemon/src/claude-session/ws-server.spec.ts:959)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:${port}/invalid (packages/daemon/src/claude-session/ws-server.spec.ts:959)"}, "fullDescription": {"text": "`packages/daemon/src/claude-session/ws-server.spec.ts:959` calls `GET http://localhost:${port}/invalid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:/<p>/invalid`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efc9ed9c3b2a7150", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (.claude/skills/estimate/embed.ts:51)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (.claude/skills/estimate/embed.ts:51)"}, "fullDescription": {"text": "`.claude/skills/estimate/embed.ts:51` calls `POST https://api.openai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4748872cb583c0fb", "name": "Unused endpoint: POST /session", "shortDescription": {"text": "Unused endpoint: POST /session"}, "fullDescription": {"text": "`packages/opencode/src/opencode-client.ts` declares `POST /session` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1daa53f3c56e6b16", "name": "Unused endpoint: GET /session", "shortDescription": {"text": "Unused endpoint: GET /session"}, "fullDescription": {"text": "`packages/opencode/src/opencode-client.ts` declares `GET /session` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21165"}, "properties": {"repository": "theshadow27/mcp-cli", "repoUrl": "https://github.com/theshadow27/mcp-cli", "branch": "main"}, "results": [{"ruleId": "scanner-bef9c895beddbcb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/triage.ts:203"}, "properties": {"repobilityId": "24307415b6e49259", "scanner": "scanner-primary", "fingerprint": "bef9c895beddbcb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2b260c14ca94261", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docs/claude-patch/slice.ts:36"}, "properties": {"repobilityId": "a8afee5dea63397d", "scanner": "scanner-primary", "fingerprint": "b2b260c14ca94261", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c640f9a7357f26e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-coverage.ts:272"}, "properties": {"repobilityId": "f49ce7a8df62445c", "scanner": "scanner-primary", "fingerprint": "c640f9a7357f26e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe008b0ecd20b622", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-timing.ts:216"}, "properties": {"repobilityId": "d08c0dff324bbcbe", "scanner": "scanner-primary", "fingerprint": "fe008b0ecd20b622", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fcc4676f42313a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-failures.ts:69"}, "properties": {"repobilityId": "adfd21ca73e2bbb5", "scanner": "scanner-primary", "fingerprint": "9fcc4676f42313a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1db718e0214fe758", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/release.ts:179"}, "properties": {"repobilityId": "d820829d8215324e", "scanner": "scanner-primary", "fingerprint": "1db718e0214fe758", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6e57268d63d3d0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/acp-spike.ts:768"}, "properties": {"repobilityId": "a4f7faf01ab5ea14", "scanner": "scanner-primary", "fingerprint": "a6e57268d63d3d0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f559ea67625079a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build.ts:22"}, "properties": {"repobilityId": "60ccf58db35ef027", "scanner": "scanner-primary", "fingerprint": "f559ea67625079a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3864647186238295", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/install-agent.ts:84"}, "properties": {"repobilityId": "d0d8f0dccece6106", "scanner": "scanner-primary", "fingerprint": "3864647186238295", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-624bf692109e0d93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__suppressed.fixture.ts:17"}, "properties": {"repobilityId": "c4f6e27321387328", "scanner": "scanner-primary", "fingerprint": "624bf692109e0d93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-daec91b75b8d1871", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__clean.fixture.ts:23"}, "properties": {"repobilityId": "6f9bcebfe5816e09", "scanner": "scanner-primary", "fingerprint": "daec91b75b8d1871", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fae40d51cf34ba5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__suppressed.fixture.ts:15"}, "properties": {"repobilityId": "f85945351538b1b6", "scanner": "scanner-primary", "fingerprint": "3fae40d51cf34ba5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a1dd8850c070ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:48"}, "properties": {"repobilityId": "285b3dacf23f819f", "scanner": "scanner-primary", "fingerprint": "3a1dd8850c070ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66da2c4e8c244fe0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__safe.fixture.ts:16"}, "properties": {"repobilityId": "ad6d3b4297c456d7", "scanner": "scanner-primary", "fingerprint": "66da2c4e8c244fe0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85cdb8a77e310a49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/test-empty-catch__flagged.fixture.ts:24"}, "properties": {"repobilityId": "761e7b52ce4cd323", "scanner": "scanner-primary", "fingerprint": "85cdb8a77e310a49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45b1936244acf0e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/no-manual-arg-parsing__flagged.fixture.ts:19"}, "properties": {"repobilityId": "554c45802feee1f9", "scanner": "scanner-primary", "fingerprint": "45b1936244acf0e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a33203e36fc03be7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/args-bounds__flagged.fixture.ts:38"}, "properties": {"repobilityId": "be753ffc656a0160", "scanner": "scanner-primary", "fingerprint": "a33203e36fc03be7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b0453f11c203911", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rules/fixtures/named-timeouts__clean.fixture.ts:39"}, "properties": {"repobilityId": "b8a7ba70c4ac3771", "scanner": "scanner-primary", "fingerprint": "1b0453f11c203911", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be99e957b9534173", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/index.ts:939"}, "properties": {"repobilityId": "6d0e359d9c704b89", "scanner": "scanner-primary", "fingerprint": "be99e957b9534173", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e06e8e58f34dbca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/alias-executor.spec.ts:255"}, "properties": {"repobilityId": "dfa9b2f06f751269", "scanner": "scanner-primary", "fingerprint": "9e06e8e58f34dbca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6056f76b8c1eccfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/automation-dispatcher.ts:416"}, "properties": {"repobilityId": "d629b2496ee134f4", "scanner": "scanner-primary", "fingerprint": "6056f76b8c1eccfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a6a476f4902b0d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/daemon/src/handlers/alias.spec.ts:129"}, "properties": {"repobilityId": "cb0dc17935c56442", "scanner": "scanner-primary", "fingerprint": "7a6a476f4902b0d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94a2faa1ef4755d6", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 packages/core/src/gh-client.ts:728"}, "properties": {"repobilityId": "04e0ab071af8217f", "scanner": "scanner-primary", "fingerprint": "94a2faa1ef4755d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-1f1078c641e2c75b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/alias-bundle.spec.ts:55"}, "properties": {"repobilityId": "413f251745f5a505", "scanner": "scanner-primary", "fingerprint": "1f1078c641e2c75b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b908637f00b57762", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/output.ts:53"}, "properties": {"repobilityId": "6af462a636dcb117", "scanner": "scanner-primary", "fingerprint": "b908637f00b57762", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93ce8e522e435d11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/main.ts:130"}, "properties": {"repobilityId": "a6930980124a3339", "scanner": "scanner-primary", "fingerprint": "93ce8e522e435d11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d746402fb58d262c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/alias-runner.ts:85"}, "properties": {"repobilityId": "1386b633cdc13f0a", "scanner": "scanner-primary", "fingerprint": "d746402fb58d262c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aad8db551df41ea1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/get.ts:32"}, "properties": {"repobilityId": "8255cdba694087f2", "scanner": "scanner-primary", "fingerprint": "aad8db551df41ea1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72dc757652e74928", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/auth.ts:23"}, "properties": {"repobilityId": "714ec35725dc699b", "scanner": "scanner-primary", "fingerprint": "72dc757652e74928", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3450e53924f2bc76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent-grid.ts:314"}, "properties": {"repobilityId": "38ed2d93584b76c4", "scanner": "scanner-primary", "fingerprint": "3450e53924f2bc76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8c00d7b0c0d3210", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.spec.ts:177"}, "properties": {"repobilityId": "158a3546a12c6090", "scanner": "scanner-primary", "fingerprint": "f8c00d7b0c0d3210", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3932ecabfbb9df8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/track.ts:264"}, "properties": {"repobilityId": "96fc67791e2f335e", "scanner": "scanner-primary", "fingerprint": "b3932ecabfbb9df8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a353c7abcad12e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/tty.ts:79"}, "properties": {"repobilityId": "840b291b98873fda", "scanner": "scanner-primary", "fingerprint": "5a353c7abcad12e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1095d926d5cc36c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/registry-cmd.ts:43"}, "properties": {"repobilityId": "d6d4fa2f0a8fbc74", "scanner": "scanner-primary", "fingerprint": "1095d926d5cc36c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e35e0d2092456b3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/import.ts:398"}, "properties": {"repobilityId": "64fafae429a95887", "scanner": "scanner-primary", "fingerprint": "e35e0d2092456b3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fe2ec6ce962d6da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/worktree-commands.ts:124"}, "properties": {"repobilityId": "4641f16cea810780", "scanner": "scanner-primary", "fingerprint": "5fe2ec6ce962d6da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b20a1b38b2893aa4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/export.ts:117"}, "properties": {"repobilityId": "3adba3e606d755ed", "scanner": "scanner-primary", "fingerprint": "b20a1b38b2893aa4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db72b8696de4459c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/version.ts:69"}, "properties": {"repobilityId": "dea03d317241ef05", "scanner": "scanner-primary", "fingerprint": "db72b8696de4459c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79dfd099adb94214", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/alias.ts:43"}, "properties": {"repobilityId": "5628c47fb1ba6d06", "scanner": "scanner-primary", "fingerprint": "79dfd099adb94214", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54f6501838a6413c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/phase.ts:112"}, "properties": {"repobilityId": "13d5037cab3ea1b7", "scanner": "scanner-primary", "fingerprint": "54f6501838a6413c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27d7ef6b4cc29619", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/claude.ts:580"}, "properties": {"repobilityId": "93018aa1a2d8651b", "scanner": "scanner-primary", "fingerprint": "27d7ef6b4cc29619", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97d8cd5e23ff7a5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/completions.ts:145"}, "properties": {"repobilityId": "29317eb9d56afa4a", "scanner": "scanner-primary", "fingerprint": "97d8cd5e23ff7a5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-949f4419b4d0e15b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/vfs.ts:199"}, "properties": {"repobilityId": "d666380517d7f4c4", "scanner": "scanner-primary", "fingerprint": "949f4419b4d0e15b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-912778d28228ad0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/spans.ts:37"}, "properties": {"repobilityId": "87da7c1ee5b99f6f", "scanner": "scanner-primary", "fingerprint": "912778d28228ad0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-958c036b4be39fa6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/telemetry.ts:22"}, "properties": {"repobilityId": "4dca6bbe944d39b0", "scanner": "scanner-primary", "fingerprint": "958c036b4be39fa6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7becb1418e02647c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/automation.ts:30"}, "properties": {"repobilityId": "cb337e661deea90c", "scanner": "scanner-primary", "fingerprint": "7becb1418e02647c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bce40581ba81914b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/sprint-stats.ts:411"}, "properties": {"repobilityId": "173b645f3ebcebc5", "scanner": "scanner-primary", "fingerprint": "bce40581ba81914b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e47c228c1423db2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/note.ts:75"}, "properties": {"repobilityId": "5d17d8b5b145fe22", "scanner": "scanner-primary", "fingerprint": "e47c228c1423db2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a373f7d38551f88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/site.ts:22"}, "properties": {"repobilityId": "de0559d9fb47ef02", "scanner": "scanner-primary", "fingerprint": "1a373f7d38551f88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e10ae92e1e7bb772", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/serve-kill.ts:23"}, "properties": {"repobilityId": "4b13feb48a7c2193", "scanner": "scanner-primary", "fingerprint": "e10ae92e1e7bb772", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99cbe52c4f597639", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/upgrade.ts:48"}, "properties": {"repobilityId": "8945a9946e2f1cfb", "scanner": "scanner-primary", "fingerprint": "99cbe52c4f597639", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf70bfd9b614288f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/pr.ts:257"}, "properties": {"repobilityId": "0cc0b6983d3ba6fd", "scanner": "scanner-primary", "fingerprint": "bf70bfd9b614288f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca450a9e2a20c414", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/memory.ts:327"}, "properties": {"repobilityId": "bdb130436199f2e5", "scanner": "scanner-primary", "fingerprint": "ca450a9e2a20c414", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5aa08eb089a7ff14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/agent.ts:1626"}, "properties": {"repobilityId": "7cac4874270496d9", "scanner": "scanner-primary", "fingerprint": "5aa08eb089a7ff14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-773b0d164786e999", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/gc.ts:81"}, "properties": {"repobilityId": "e83879c3597e7bf3", "scanner": "scanner-primary", "fingerprint": "773b0d164786e999", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a8077a651f65eaa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/command/src/commands/dump.ts:138"}, "properties": {"repobilityId": "cee4c01e29115ce6", "scanner": "scanner-primary", "fingerprint": "9a8077a651f65eaa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-022ad89633bd678e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/flaky-tests/mine-flaky-tests.ts:207"}, "properties": {"repobilityId": "490d9b930914f020", "scanner": "scanner-primary", "fingerprint": "022ad89633bd678e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3885180f1e0726ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/extract-messages.ts:91"}, "properties": {"repobilityId": "c5f80cc3f1eb93ed", "scanner": "scanner-primary", "fingerprint": "3885180f1e0726ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca3bcc4095c5d549", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/recent-sessions.ts:42"}, "properties": {"repobilityId": "f45f42f466036170", "scanner": "scanner-primary", "fingerprint": "ca3bcc4095c5d549", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90f2def704725a7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/find-session/scripts/search-sessions.ts:176"}, "properties": {"repobilityId": "6e552b32f3d61b77", "scanner": "scanner-primary", "fingerprint": "90f2def704725a7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e17f870f65779f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/diary/extract-sessions.ts:227"}, "properties": {"repobilityId": "29070c71b618d14d", "scanner": "scanner-primary", "fingerprint": "3e17f870f65779f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-986c300724062bb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate-triage.ts:149"}, "properties": {"repobilityId": "21d02ef37bf2684e", "scanner": "scanner-primary", "fingerprint": "986c300724062bb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8edb9b812cd67d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/score.ts:473"}, "properties": {"repobilityId": "f18cf887f8531563", "scanner": "scanner-primary", "fingerprint": "a8edb9b812cd67d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-146857b943b04f6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/triage.ts:68"}, "properties": {"repobilityId": "853662d83cdc1f47", "scanner": "scanner-primary", "fingerprint": "146857b943b04f6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-254d77a34db1f750", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/backfill.ts:423"}, "properties": {"repobilityId": "16df68db98790d0d", "scanner": "scanner-primary", "fingerprint": "254d77a34db1f750", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e630f825e6579ced", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/validate.ts:531"}, "properties": {"repobilityId": "c366c8965571dd49", "scanner": "scanner-primary", "fingerprint": "e630f825e6579ced", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4505cfe403345137", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/estimate/embed.ts:137"}, "properties": {"repobilityId": "21d41438ef594079", "scanner": "scanner-primary", "fingerprint": "4505cfe403345137", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e64cc97759bb2dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/sprint-lessons/extract-sprint-sessions.ts:392"}, "properties": {"repobilityId": "0eda47879c5a22e4", "scanner": "scanner-primary", "fingerprint": "2e64cc97759bb2dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fce37f795170dd54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/rule-author/scripts/extract-pr.ts:140"}, "properties": {"repobilityId": "d33cc6f86a451b1e", "scanner": "scanner-primary", "fingerprint": "fce37f795170dd54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffb8f1554e6d3d3f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in docs/claude-patch/triage.ts:23"}, "properties": {"repobilityId": "cc49204505ff1dfa", "scanner": "scanner-primary", "fingerprint": "ffb8f1554e6d3d3f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/claude-patch/triage.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-54e215cf6c406f7d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-failure-log.ts:14"}, "properties": {"repobilityId": "beeb60b00746f7e0", "scanner": "scanner-primary", "fingerprint": "54e215cf6c406f7d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-failure-log.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-1048fb020c9d01c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/agent-grid-detect.ts:14"}, "properties": {"repobilityId": "c17181dab2366790", "scanner": "scanner-primary", "fingerprint": "1048fb020c9d01c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent-grid-detect.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-9f2f0c69a7408ccd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/coverage-diff.ts:1"}, "properties": {"repobilityId": "5a94871ee1374b7e", "scanner": "scanner-primary", "fingerprint": "9f2f0c69a7408ccd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/coverage-diff.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aef88725bdda7e52", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.spec.ts:2"}, "properties": {"repobilityId": "8ff50eba8cf2ec1a", "scanner": "scanner-primary", "fingerprint": "aef88725bdda7e52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_runner/verdict-cache.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-75cf457b82350630", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/verdict-cache.ts:11"}, "properties": {"repobilityId": "f24e818d32fdd646", "scanner": "scanner-primary", "fingerprint": "75cf457b82350630", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_runner/verdict-cache.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-02d1614fcc0e7ef8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/ci-steps.ts:26"}, "properties": {"repobilityId": "9f858563be7256c6", "scanner": "scanner-primary", "fingerprint": "02d1614fcc0e7ef8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_runner/ci-steps.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-b40a1945aed2b057", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/phases-discovery.spec.ts:3"}, "properties": {"repobilityId": "476d00b98d02a8eb", "scanner": "scanner-primary", "fingerprint": "b40a1945aed2b057", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_runner/phases-discovery.spec.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-5e94576c024197e0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/_runner/runner.ts:25"}, "properties": {"repobilityId": "775fa1bbbe154076", "scanner": "scanner-primary", "fingerprint": "5e94576c024197e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/_runner/runner.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-3ca9aa634b2703b4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-parser.spec.ts:2"}, "properties": {"repobilityId": "c124b42c2720d7c3", "scanner": "scanner-primary", "fingerprint": "3ca9aa634b2703b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/fast-import-parser.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-c23cfbb0f97e45c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/fast-import-writer.spec.ts:2"}, "properties": {"repobilityId": "27cb09267a450464", "scanner": "scanner-primary", "fingerprint": "c23cfbb0f97e45c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/fast-import-writer.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-01c16e2c985345b5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.ts:15"}, "properties": {"repobilityId": "dadff2e84a5ef3fb", "scanner": "scanner-primary", "fingerprint": "01c16e2c985345b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/pull.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-c0addd787eceef60", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.spec.ts:2"}, "properties": {"repobilityId": "0e176cbc3002ff39", "scanner": "scanner-primary", "fingerprint": "c0addd787eceef60", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/clone.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-21ea92146e84c1fc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/pull.spec.ts:2"}, "properties": {"repobilityId": "795aaf9fb54a2bb0", "scanner": "scanner-primary", "fingerprint": "21ea92146e84c1fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/pull.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-c8e28212727aecdf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/clone/src/engine/clone.ts:12"}, "properties": {"repobilityId": "e5c17beb1cddabfe", "scanner": "scanner-primary", "fingerprint": "c8e28212727aecdf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/src/engine/clone.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-c5f309efd34414c4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/port-holder.ts:6"}, "properties": {"repobilityId": "3ffc39b7bde601cf", "scanner": "scanner-primary", "fingerprint": "c5f309efd34414c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/port-holder.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-ca2ae6161ec79805", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/daemon/src/index.ts:150"}, "properties": {"repobilityId": "4b0daab86f6e9ee9", "scanner": "scanner-primary", "fingerprint": "ca2ae6161ec79805", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/index.ts"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-684bf0d5e76a2630", "level": "error", "message": {"text": "Possible secret in packages/daemon/src/server-pool.spec.ts"}, "properties": {"repobilityId": "5902ea62a0bde673", "scanner": "scanner-primary", "fingerprint": "684bf0d5e76a2630", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/server-pool.spec.ts"}, "region": {"startLine": 493}}}]}, {"ruleId": "scanner-206339cdb7c85842", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.spec.ts:2"}, "properties": {"repobilityId": "ddfc4106ce3511b0", "scanner": "scanner-primary", "fingerprint": "206339cdb7c85842", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/tls/self-signed.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ab0db1b854968b1e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/daemon/src/tls/self-signed.ts:18"}, "properties": {"repobilityId": "6636d2acfc87141d", "scanner": "scanner-primary", "fingerprint": "ab0db1b854968b1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/tls/self-signed.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-c7181be2afc7e8df", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/daemon/src/github/graphql-client.ts:244"}, "properties": {"repobilityId": "9ceb39015ebee0cd", "scanner": "scanner-primary", "fingerprint": "c7181be2afc7e8df", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/github/graphql-client.ts"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-1580db4f502964ed", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in packages/daemon/src/claude-session/binary-resolver.spec.ts:13"}, "properties": {"repobilityId": "009bb93b5195dd29", "scanner": "scanner-primary", "fingerprint": "1580db4f502964ed", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/claude-session/binary-resolver.spec.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-4999899d11e5925c", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in packages/daemon/src/site/seeds.spec.ts:137"}, "properties": {"repobilityId": "dbd009ad4bebe442", "scanner": "scanner-primary", "fingerprint": "4999899d11e5925c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/site/seeds.spec.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-cb6483f84d8e8606", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in packages/daemon/src/site/browser/playwright.ts:424"}, "properties": {"repobilityId": "cdf360378b9aaded", "scanner": "scanner-primary", "fingerprint": "cb6483f84d8e8606", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/site/browser/playwright.ts"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 261}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 540}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 551}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 626}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "9f82041ae15f98d0", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 718}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "1a80f5a2bb1acb74", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "1a80f5a2bb1acb74", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 627}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "65d213e9206ff146", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-04aeaa6a8b53c758", "level": "error", "message": {"text": "Possible secret in packages/core/src/sanitizer.spec.ts"}, "properties": {"repobilityId": "65d213e9206ff146", "scanner": "scanner-primary", "fingerprint": "04aeaa6a8b53c758", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 622}}}]}, {"ruleId": "scanner-10cde080c576e0fd", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in packages/core/src/sanitizer.spec.ts:296"}, "properties": {"repobilityId": "cb03bdc5a51496c3", "scanner": "scanner-primary", "fingerprint": "10cde080c576e0fd", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/sanitizer.spec.ts"}, "region": {"startLine": 296}}}]}, {"ruleId": "scanner-361350c27c8648a7", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/core/src/git.ts:30"}, "properties": {"repobilityId": "a08db5da0c11c327", "scanner": "scanner-primary", "fingerprint": "361350c27c8648a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/git.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-e3540a980f779385", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in packages/core/src/branch-guard.ts:39"}, "properties": {"repobilityId": "b886c08f929a9d08", "scanner": "scanner-primary", "fingerprint": "e3540a980f779385", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/branch-guard.ts"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-725ed6889a2d35cd", "level": "error", "message": {"text": "Possible secret in packages/core/src/telemetry.ts"}, "properties": {"repobilityId": "6ae296fb2bb5dc77", "scanner": "scanner-primary", "fingerprint": "725ed6889a2d35cd", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/telemetry.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-688831ede2aacca4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.spec.ts:2"}, "properties": {"repobilityId": "6731c7ebbc55f85b", "scanner": "scanner-primary", "fingerprint": "688831ede2aacca4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/claude-patch/patcher.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-376d07156d3b842e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/claude-patch/patcher.ts:14"}, "properties": {"repobilityId": "98bb5923696571c6", "scanner": "scanner-primary", "fingerprint": "376d07156d3b842e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/claude-patch/patcher.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-f95128e9d465cb9f", "level": "error", "message": {"text": "Possible secret in packages/command/src/daemon-lifecycle.spec.ts"}, "properties": {"repobilityId": "c39a563bf0095afe", "scanner": "scanner-primary", "fingerprint": "f95128e9d465cb9f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/command/src/daemon-lifecycle.spec.ts"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-f95128e9d465cb9f", "level": "error", "message": {"text": "Possible secret in packages/command/src/daemon-lifecycle.spec.ts"}, "properties": {"repobilityId": "c39a563bf0095afe", "scanner": "scanner-primary", "fingerprint": "f95128e9d465cb9f", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/command/src/daemon-lifecycle.spec.ts"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-379397e727b6ab91", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/command/src/file-read.spec.ts:2"}, "properties": {"repobilityId": "3e0d10b01405d29b", "scanner": "scanner-primary", "fingerprint": "379397e727b6ab91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/command/src/file-read.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-44336be0be42943d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/command/src/commands/alias.ts:5"}, "properties": {"repobilityId": "8f99e38b6cd56ba4", "scanner": "scanner-primary", "fingerprint": "44336be0be42943d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/command/src/commands/alias.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e77c0e5d3127afa0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.ts:1"}, "properties": {"repobilityId": "23a5ab0f5a00c247", "scanner": "scanner-primary", "fingerprint": "e77c0e5d3127afa0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agent-grid/src/isolation.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9d016d89fb1ce13d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in agent-grid/src/isolation.spec.ts:2"}, "properties": {"repobilityId": "8b10c7ec86b8c0bf", "scanner": "scanner-primary", "fingerprint": "9d016d89fb1ce13d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agent-grid/src/isolation.spec.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-bdf1eedebabcf701", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/skills/estimate/triage.ts:21"}, "properties": {"repobilityId": "f4c51c1383ff8b2d", "scanner": "scanner-primary", "fingerprint": "bdf1eedebabcf701", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/estimate/triage.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-7a026bc403785e37", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/skills/estimate/backfill.ts:22"}, "properties": {"repobilityId": "83624aff8a996e66", "scanner": "scanner-primary", "fingerprint": "7a026bc403785e37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/estimate/backfill.ts"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-3b959d26d18381e4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/skills/sprint-lessons/extract-sprint-sessions.ts:28"}, "properties": {"repobilityId": "a644d6037122005d", "scanner": "scanner-primary", "fingerprint": "3b959d26d18381e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/sprint-lessons/extract-sprint-sessions.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dca2b9a9fbfb28", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dca2b9a9fbfb28", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dca2b9a9fbfb28", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-75cac5fbaf7ea6fb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dae0c695a22da7a3", "scanner": "scanner-primary", "fingerprint": "75cac5fbaf7ea6fb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/macos-matrix.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e53453fef8a3ee1", "level": "note", "message": {"text": "Very large file: packages/daemon/src/ipc-server.spec.ts (4440 lines)"}, "properties": {"repobilityId": "e2f4eb922ba84422", "scanner": "scanner-primary", "fingerprint": "9e53453fef8a3ee1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-65a6932515a56465", "level": "note", "message": {"text": "Very large file: packages/daemon/src/index.ts (1444 lines)"}, "properties": {"repobilityId": "73f5feb1c621bb76", "scanner": "scanner-primary", "fingerprint": "65a6932515a56465", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-80d8a1e01aa939a6", "level": "note", "message": {"text": "Very large file: packages/daemon/src/claude-server.spec.ts (1895 lines)"}, "properties": {"repobilityId": "64e0349dc522873b", "scanner": "scanner-primary", "fingerprint": "80d8a1e01aa939a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75c77d1f74a4ca58", "level": "note", "message": {"text": "Very large file: packages/daemon/src/server-pool.spec.ts (1836 lines)"}, "properties": {"repobilityId": "68744143995ec839", "scanner": "scanner-primary", "fingerprint": "75c77d1f74a4ca58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c072992f0dee641", "level": "note", "message": {"text": "Very large file: packages/daemon/src/work-items-server.spec.ts (1534 lines)"}, "properties": {"repobilityId": "93a9ff9b6b8f41ce", "scanner": "scanner-primary", "fingerprint": "3c072992f0dee641", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-97047a03ec57f021", "level": "note", "message": {"text": "Very large file: packages/daemon/src/claude-session/ws-server.spec.ts (5442 lines)"}, "properties": {"repobilityId": "642c2fa93e166b6b", "scanner": "scanner-primary", "fingerprint": "97047a03ec57f021", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f11e2e7b54b14c7d", "level": "note", "message": {"text": "Very large file: packages/daemon/src/claude-session/ws-server.ts (2967 lines)"}, "properties": {"repobilityId": "7091cc04cbfc72c2", "scanner": "scanner-primary", "fingerprint": "f11e2e7b54b14c7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c1c08e776379205", "level": "note", "message": {"text": "Very large file: packages/daemon/src/db/state.spec.ts (2425 lines)"}, "properties": {"repobilityId": "3df41b51ccd1c8b7", "scanner": "scanner-primary", "fingerprint": "1c1c08e776379205", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-feb4a9d5109e555b", "level": "note", "message": {"text": "Very large file: packages/daemon/src/db/state.ts (1976 lines)"}, "properties": {"repobilityId": "bd2088749e710de9", "scanner": "scanner-primary", "fingerprint": "feb4a9d5109e555b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55c009aebb03e5f9", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/phase.spec.ts (3710 lines)"}, "properties": {"repobilityId": "45d5e1102ec6acd5", "scanner": "scanner-primary", "fingerprint": "55c009aebb03e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0978166ab162cab6", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/phase.ts (2120 lines)"}, "properties": {"repobilityId": "4751b36e9c370c19", "scanner": "scanner-primary", "fingerprint": "0978166ab162cab6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a42a47c52911e0ab", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/claude.ts (2283 lines)"}, "properties": {"repobilityId": "539d80a2b9e60eac", "scanner": "scanner-primary", "fingerprint": "a42a47c52911e0ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb080eb7f937d6b0", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/agent.spec.ts (2492 lines)"}, "properties": {"repobilityId": "61bc95de04d20419", "scanner": "scanner-primary", "fingerprint": "cb080eb7f937d6b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a47415436e10ecbf", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/agent.ts (1969 lines)"}, "properties": {"repobilityId": "4302e96837d9fa0f", "scanner": "scanner-primary", "fingerprint": "a47415436e10ecbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be65135413e0946f", "level": "note", "message": {"text": "Very large file: packages/command/src/commands/claude.spec.ts (5750 lines)"}, "properties": {"repobilityId": "3ec73e684a5c05bd", "scanner": "scanner-primary", "fingerprint": "be65135413e0946f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-e45f130a8587532e", "level": "note", "message": {"text": "75 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "e45f130a8587532e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-12effcd1fb7331db", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/opencode/package.json"}, "properties": {"repobilityId": "2d8a82120c14a3f9", "scanner": "scanner-primary", "fingerprint": "12effcd1fb7331db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/opencode/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9847fe1cabc60190", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/clone/package.json"}, "properties": {"repobilityId": "fe294650a7d8dc87", "scanner": "scanner-primary", "fingerprint": "9847fe1cabc60190", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/clone/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c41602e869b4ca40", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/acp/package.json"}, "properties": {"repobilityId": "304cb12066a65d72", "scanner": "scanner-primary", "fingerprint": "c41602e869b4ca40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/acp/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6d2cff9e5618917", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/daemon/package.json"}, "properties": {"repobilityId": "db882a8b0b8feade", "scanner": "scanner-primary", "fingerprint": "f6d2cff9e5618917", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44ea7c2f48702506", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/codex/package.json"}, "properties": {"repobilityId": "2eed6a3d03f57bb5", "scanner": "scanner-primary", "fingerprint": "44ea7c2f48702506", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/codex/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28e92806c0db3cd2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "properties": {"repobilityId": "8640e46be7e3f9b2", "scanner": "scanner-primary", "fingerprint": "28e92806c0db3cd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9b718195fda2ba4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/control/package.json"}, "properties": {"repobilityId": "97c9d346f4d599b4", "scanner": "scanner-primary", "fingerprint": "c9b718195fda2ba4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/control/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c9b2b0943d09080", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/command/package.json"}, "properties": {"repobilityId": "d0c67bc9705a6e60", "scanner": "scanner-primary", "fingerprint": "6c9b2b0943d09080", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/command/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-754d5d08f16077f4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: agent-grid/package.json"}, "properties": {"repobilityId": "5bf7a0cabaac1b86", "scanner": "scanner-primary", "fingerprint": "754d5d08f16077f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agent-grid/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f40bc99212912de2", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "3ec74a4648ab0288", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "96dd45c35aad0859", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "745fd1e6c7329e66", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "711a1571b8e5fc03", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0c3a86800fa77ee7", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "31dbd27088dddd3f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c983c9df695ba133", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: packages/daemon/src/mock-session/CLAUDE.md"}, "properties": {"repobilityId": "1b7e5bee048bb355", "scanner": "scanner-primary", "fingerprint": "c983c9df695ba133", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/daemon/src/mock-session/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c17253b22980f855", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/mine-rules.md"}, "properties": {"repobilityId": "8eaca8ca32909397", "scanner": "scanner-primary", "fingerprint": "c17253b22980f855", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/mine-rules.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78cfcf6bec207768", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/sprints/sprint-24.md"}, "properties": {"repobilityId": "8abba5b93d293e5b", "scanner": "scanner-primary", "fingerprint": "78cfcf6bec207768", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/sprints/sprint-24.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bccfa3e337b6a7cc", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/diary/20260312.md"}, "properties": {"repobilityId": "e31b9dee0151de2d", "scanner": "scanner-primary", "fingerprint": "bccfa3e337b6a7cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/diary/20260312.md"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-02ec6268858c551c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/project_sprites_remote_orchestration.md"}, "properties": {"repobilityId": "3a0130f723045758", "scanner": "scanner-primary", "fingerprint": "02ec6268858c551c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/project_sprites_remote_orchestration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8bc1ae58d2ad0aad", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_schedulewakeup_orchestration.md"}, "properties": {"repobilityId": "9b4578fcae73e296", "scanner": "scanner-primary", "fingerprint": "8bc1ae58d2ad0aad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_schedulewakeup_orchestration.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-319e19aa26986f94", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_no_rebase_sprint_branch.md"}, "properties": {"repobilityId": "5dce3cc65cc2bc9b", "scanner": "scanner-primary", "fingerprint": "319e19aa26986f94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_no_rebase_sprint_branch.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1375d552f2853d9b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_sprint_bulk_and_cascade.md"}, "properties": {"repobilityId": "94d5579c4a38103e", "scanner": "scanner-primary", "fingerprint": "1375d552f2853d9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_sprint_bulk_and_cascade.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b61a35897ff5c280", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/project_sprint_operator.md"}, "properties": {"repobilityId": "a7bc1c5e92416360", "scanner": "scanner-primary", "fingerprint": "b61a35897ff5c280", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/project_sprint_operator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5ff0a3152d47858e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/memory/feedback_quota_status_staleness.md"}, "properties": {"repobilityId": "cd1e714d7b6419b8", "scanner": "scanner-primary", "fingerprint": "5ff0a3152d47858e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_quota_status_staleness.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c96198d07b8491e9", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/memory/feedback_phase_repair_to_qa.md"}, "properties": {"repobilityId": "0867bf2809748642", "scanner": "scanner-primary", "fingerprint": "c96198d07b8491e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_phase_repair_to_qa.md"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-1a19c7049a36422a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_phase_repair_to_qa.md"}, "properties": {"repobilityId": "06947dffdfc5b898", "scanner": "scanner-primary", "fingerprint": "1a19c7049a36422a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_phase_repair_to_qa.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-95a79425e7cabd87", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/feedback_meta_issue_planning_guard.md"}, "properties": {"repobilityId": "2218a3d036555bef", "scanner": "scanner-primary", "fingerprint": "95a79425e7cabd87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/feedback_meta_issue_planning_guard.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1110c6f41fe0e4a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/memory/user_cache_ttl.md"}, "properties": {"repobilityId": "5b483bff94db75af", "scanner": "scanner-primary", "fingerprint": "a1110c6f41fe0e4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/memory/user_cache_ttl.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c38390b3fc07a72", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/diary/SKILL.md"}, "properties": {"repobilityId": "b71a2497bf2e98f3", "scanner": "scanner-primary", "fingerprint": "9c38390b3fc07a72", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/diary/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ec8bc2420dd9c94", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/estimate/SKILL.md"}, "properties": {"repobilityId": "8bb9fe0cf251dcc4", "scanner": "scanner-primary", "fingerprint": "9ec8bc2420dd9c94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/estimate/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0900ef55f137c71", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/SKILL.md"}, "properties": {"repobilityId": "e14eafca549a12b2", "scanner": "scanner-primary", "fingerprint": "a0900ef55f137c71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/why/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03659fba88a3b4ea", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/references/plan.md"}, "properties": {"repobilityId": "8b340bd9b44b9bbc", "scanner": "scanner-primary", "fingerprint": "03659fba88a3b4ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/why/references/plan.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b504cab0e77a32f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/why/references/why-workflow.md"}, "properties": {"repobilityId": "f64321c657697ec2", "scanner": "scanner-primary", "fingerprint": "1b504cab0e77a32f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/why/references/why-workflow.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6867c59ec5e28857", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/sprint/SKILL.md"}, "properties": {"repobilityId": "39d876e6f2ceb37f", "scanner": "scanner-primary", "fingerprint": "6867c59ec5e28857", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/sprint/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79ff1e433e3fe129", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/sprint-lessons/SKILL.md"}, "properties": {"repobilityId": "6bda7ff1757129be", "scanner": "scanner-primary", "fingerprint": "79ff1e433e3fe129", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/sprint-lessons/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-20dfe5bdad0d53de", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skill/SKILL.md"}, "properties": {"repobilityId": "e28dfdfcd36ac044", "scanner": "scanner-primary", "fingerprint": "20dfe5bdad0d53de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skill/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac948f42ae2616ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/monitor-alias.integration.spec.ts:38"}, "properties": {"repobilityId": "0e22ad52f9d8b140", "scanner": "scanner-primary", "fingerprint": "ac948f42ae2616ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4af4589de3161470", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/session-result-sse.integration.spec.ts:51"}, "properties": {"repobilityId": "be7213542d2deaf1", "scanner": "scanner-primary", "fingerprint": "4af4589de3161470", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f270b620ff85a33", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/harness.ts:64"}, "properties": {"repobilityId": "fe8cb4226db2fa18", "scanner": "scanner-primary", "fingerprint": "4f270b620ff85a33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f12014867c10b842", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/harness.ts:275"}, "properties": {"repobilityId": "00ed6ddcffd2e3f9", "scanner": "scanner-primary", "fingerprint": "f12014867c10b842", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa4db68002dcfc29", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/daemon-integration.spec.ts:487"}, "properties": {"repobilityId": "09bd3693f083d980", "scanner": "scanner-primary", "fingerprint": "fa4db68002dcfc29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b57cb90937a76de", "level": "none", "message": {"text": "Commented-code block (5 lines) in test/transport-errors.spec.ts:24"}, "properties": {"repobilityId": "b4d05c9307add8b6", "scanner": "scanner-primary", "fingerprint": "4b57cb90937a76de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e47368ef9b57046f", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/mock-claude.ts:15"}, "properties": {"repobilityId": "040163aeac50f18f", "scanner": "scanner-primary", "fingerprint": "e47368ef9b57046f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47e8802df015d3ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/event-filter.integration.spec.ts:99"}, "properties": {"repobilityId": "cab7bf2f39c467a7", "scanner": "scanner-primary", "fingerprint": "47e8802df015d3ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3cce52ee3a1ffaaf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 test/http-401-server.ts:9"}, "properties": {"repobilityId": "739cb77fd9d30c55", "scanner": "scanner-primary", "fingerprint": "3cce52ee3a1ffaaf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-939641bf04f3d615", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-coverage.ts:218"}, "properties": {"repobilityId": "264acc020fdc83d4", "scanner": "scanner-primary", "fingerprint": "939641bf04f3d615", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-363b7ccae281d304", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/doing-it-wrong.ts:79"}, "properties": {"repobilityId": "beab6783f9aad31a", "scanner": "scanner-primary", "fingerprint": "363b7ccae281d304", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-977fe44a9d19df16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/opencode-spike.ts:171"}, "properties": {"repobilityId": "89ca025ca9300c20", "scanner": "scanner-primary", "fingerprint": "977fe44a9d19df16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4bbe48c8ed55517", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/daemon-workers.spec.ts:42"}, "properties": {"repobilityId": "619ac0f8943aef3c", "scanner": "scanner-primary", "fingerprint": "d4bbe48c8ed55517", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff402a85236bc326", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/build.ts:138"}, "properties": {"repobilityId": "fbd489fa6ac1ea7b", "scanner": "scanner-primary", "fingerprint": "ff402a85236bc326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd7189a4b89fb2b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/am-i-done.ts:143"}, "properties": {"repobilityId": "0818f6e0612b33f4", "scanner": "scanner-primary", "fingerprint": "dd7189a4b89fb2b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed455179cd8b90a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rules/no-import-cycles.rule.spec.ts:228"}, "properties": {"repobilityId": "e3d522d9994baf2e", "scanner": "scanner-primary", "fingerprint": "ed455179cd8b90a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3685a95d01e9e735", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rules/no-raw-path-handling.rule.ts:52"}, "properties": {"repobilityId": "04e17ba5f4ce2d49", "scanner": "scanner-primary", "fingerprint": "3685a95d01e9e735", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4db5be16c800719d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/rules/fixtures/no-raw-path-handling__clean.fixture.ts:71"}, "properties": {"repobilityId": "db0f338328fcdd56", "scanner": "scanner-primary", "fingerprint": "4db5be16c800719d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57740a8b9581ca06", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/rules/_engine/import-graph.ts:189"}, "properties": {"repobilityId": "9de5e924ae101153", "scanner": "scanner-primary", "fingerprint": "57740a8b9581ca06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfedf768ff1267ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/_runner/ci-steps.ts:37"}, "properties": {"repobilityId": "41a01b6abd66afea", "scanner": "scanner-primary", "fingerprint": "bfedf768ff1267ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e800637828526a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/_runner/context.ts:33"}, "properties": {"repobilityId": "c3167df0ff76a848", "scanner": "scanner-primary", "fingerprint": "0e800637828526a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baa8f64d0a44dfdd", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/_runner/phases-discovery.spec.ts:15"}, "properties": {"repobilityId": "c7baf679ed0faca1", "scanner": "scanner-primary", "fingerprint": "baa8f64d0a44dfdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99445e680b58656b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/_runner/ci-steps.spec.ts:84"}, "properties": {"repobilityId": "879ea6a9cbb19022", "scanner": "scanner-primary", "fingerprint": "99445e680b58656b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23ff12ca94d059a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-sse.spec.ts:76"}, "properties": {"repobilityId": "f83aa4279ce3e468", "scanner": "scanner-primary", "fingerprint": "23ff12ca94d059a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40c624e5c4032b4b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/opencode/src/opencode-client.ts:4"}, "properties": {"repobilityId": "9ffe45d04dc0c85e", "scanner": "scanner-primary", "fingerprint": "40c624e5c4032b4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-180bd4c04d7b56d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/opencode/src/opencode-permission-adapter.ts:61"}, "properties": {"repobilityId": "648fe09758b4f4aa", "scanner": "scanner-primary", "fingerprint": "180bd4c04d7b56d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-728374e9efccbd03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/provider.ts:97"}, "properties": {"repobilityId": "1f71b6d94477f9f1", "scanner": "scanner-primary", "fingerprint": "728374e9efccbd03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-602b7ba9a65d4d52", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.ts:220"}, "properties": {"repobilityId": "68dff1d161528044", "scanner": "scanner-primary", "fingerprint": "602b7ba9a65d4d52", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4071a42a625e6542", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.ts:182"}, "properties": {"repobilityId": "97f3a49392cecfcb", "scanner": "scanner-primary", "fingerprint": "4071a42a625e6542", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa0c8232dce51f4d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/asana.spec.ts:481"}, "properties": {"repobilityId": "316f619cf0ce3b59", "scanner": "scanner-primary", "fingerprint": "aa0c8232dce51f4d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f9347a949fc8aebe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.ts:224"}, "properties": {"repobilityId": "cfdb4251e97138bb", "scanner": "scanner-primary", "fingerprint": "f9347a949fc8aebe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac3005b1b14776a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/jira.spec.ts:266"}, "properties": {"repobilityId": "d411886c070d98aa", "scanner": "scanner-primary", "fingerprint": "ac3005b1b14776a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf6399ab621600d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.ts:163"}, "properties": {"repobilityId": "3621a194306ccc2c", "scanner": "scanner-primary", "fingerprint": "bf6399ab621600d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13cc8b14ce7bb02e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/github-issues.spec.ts:299"}, "properties": {"repobilityId": "f74bff36a506cdb7", "scanner": "scanner-primary", "fingerprint": "13cc8b14ce7bb02e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-84bb9b2b4aed19cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/providers/confluence.spec.ts:335"}, "properties": {"repobilityId": "0ed6f1a5d2da427e", "scanner": "scanner-primary", "fingerprint": "84bb9b2b4aed19cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0be1f703caeca5d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/pull.ts:285"}, "properties": {"repobilityId": "0812655e7d152f36", "scanner": "scanner-primary", "fingerprint": "0be1f703caeca5d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9d50cd9db4cf9d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/clone.ts:29"}, "properties": {"repobilityId": "b5ef16fceb632427", "scanner": "scanner-primary", "fingerprint": "d9d50cd9db4cf9d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa3520960ab67b7c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.ts:129"}, "properties": {"repobilityId": "e05a7f7589dc04a7", "scanner": "scanner-primary", "fingerprint": "fa3520960ab67b7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7879a96ddafe651", "level": "none", "message": {"text": "Commented-code block (13 lines) in packages/clone/src/engine/__tests__/remote-helper.integration.spec.ts:374"}, "properties": {"repobilityId": "a89f184945a5a5a1", "scanner": "scanner-primary", "fingerprint": "d7879a96ddafe651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52e183731860b59c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/clone/src/engine/__tests__/mock-provider.spec.ts:43"}, "properties": {"repobilityId": "d6eff46208975d4e", "scanner": "scanner-primary", "fingerprint": "52e183731860b59c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0722665bd1b6a43f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/acp/src/acp-session.ts:556"}, "properties": {"repobilityId": "b1a00ba387ee5b7a", "scanner": "scanner-primary", "fingerprint": "0722665bd1b6a43f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c2f8411500ab64e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/open-event-stream.spec.ts:234"}, "properties": {"repobilityId": "8ec7761108f8c0c1", "scanner": "scanner-primary", "fingerprint": "6c2f8411500ab64e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a25f58c16b668be", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/claude-session-worker.ts:218"}, "properties": {"repobilityId": "0eb608319fcf21b4", "scanner": "scanner-primary", "fingerprint": "8a25f58c16b668be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bc9336b069db0a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.spec.ts:120"}, "properties": {"repobilityId": "3e970be062de2b2e", "scanner": "scanner-primary", "fingerprint": "4bc9336b069db0a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f271f6d2a2327163", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/alias-state.spec.ts:88"}, "properties": {"repobilityId": "ffd9d1f9c0a63ffe", "scanner": "scanner-primary", "fingerprint": "f271f6d2a2327163", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-448f4830d159ec5a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/daemon/src/codex-server.spec.ts:358"}, "properties": {"repobilityId": "f7b85c38fff20294", "scanner": "scanner-primary", "fingerprint": "448f4830d159ec5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53d4d7d35f5c0d3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/server-pool.ts:364"}, "properties": {"repobilityId": "4b3f22a29163f0e8", "scanner": "scanner-primary", "fingerprint": "53d4d7d35f5c0d3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fc44aab0c3e9078", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/index.ts:1255"}, "properties": {"repobilityId": "65885449ce2c6235", "scanner": "scanner-primary", "fingerprint": "3fc44aab0c3e9078", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4694eaf01c1439d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/work-items-server.ts:431"}, "properties": {"repobilityId": "0ed18fd848685cb3", "scanner": "scanner-primary", "fingerprint": "d4694eaf01c1439d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b868dcafe9464a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/ipc-server.ts:451"}, "properties": {"repobilityId": "6b3814c0a3496f80", "scanner": "scanner-primary", "fingerprint": "8b868dcafe9464a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f1d60a7b98cea1b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/ipc-server.ts:194"}, "properties": {"repobilityId": "515dd625dbf539ae", "scanner": "scanner-primary", "fingerprint": "2f1d60a7b98cea1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-200997a1a26325df", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/mock-server.spec.ts:800"}, "properties": {"repobilityId": "021779116676aa03", "scanner": "scanner-primary", "fingerprint": "200997a1a26325df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-594a41065216216f", "level": "note", "message": {"text": "Legacy-named symbol `closeOld` in packages/daemon/src/server-pool.spec.ts:1475"}, "properties": {"repobilityId": "d486a715b9ee1738", "scanner": "scanner-primary", "fingerprint": "594a41065216216f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d6429002303fb5f5", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/daemon/src/server-pool.spec.ts:1780"}, "properties": {"repobilityId": "583cf7706a0f52f5", "scanner": "scanner-primary", "fingerprint": "d6429002303fb5f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a0119907bc612d5", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/daemon/src/tls/self-signed.spec.ts:156"}, "properties": {"repobilityId": "518fb463f58e8904", "scanner": "scanner-primary", "fingerprint": "6a0119907bc612d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-004417cdf878df1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/auth/oauth-provider.ts:85"}, "properties": {"repobilityId": "b87e693cd17658fa", "scanner": "scanner-primary", "fingerprint": "004417cdf878df1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-202ab1e61cae8f03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.spec.ts:24"}, "properties": {"repobilityId": "5a544d5803d25f1f", "scanner": "scanner-primary", "fingerprint": "202ab1e61cae8f03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5add5d021ba7a467", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/auth/callback-server.ts:55"}, "properties": {"repobilityId": "97e8960289165c4a", "scanner": "scanner-primary", "fingerprint": "5add5d021ba7a467", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31520f3909db1957", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/daemon/src/claude-session/ws-server.spec.ts:950"}, "properties": {"repobilityId": "19290bb3720bcc03", "scanner": "scanner-primary", "fingerprint": "31520f3909db1957", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af412685fbbce669", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/daemon/src/claude-session/ws-server.ts:518"}, "properties": {"repobilityId": "b2e2e401d0a2915c", "scanner": "scanner-primary", "fingerprint": "af412685fbbce669", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2c8f1686c29bc4b", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/daemon/src/claude-session/binary-resolver.ts:126"}, "properties": {"repobilityId": "fcf782b7ea6ba918", "scanner": "scanner-primary", "fingerprint": "a2c8f1686c29bc4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fa523e5e7a2030d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/daemon/src/site/browser/resolve-playwright.spec.ts:209"}, "properties": {"repobilityId": "6d0640b2984a4e54", "scanner": "scanner-primary", "fingerprint": "7fa523e5e7a2030d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-488948247f70c3e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/daemon/src/db/state.ts:1036"}, "properties": {"repobilityId": "32afbb666cea8b02", "scanner": "scanner-primary", "fingerprint": "488948247f70c3e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d9c32feea12723e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/codex/src/codex-session.ts:373"}, "properties": {"repobilityId": "a5e6b1207ee711c9", "scanner": "scanner-primary", "fingerprint": "0d9c32feea12723e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3bab61176f454ec", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/phase-transition.ts:196"}, "properties": {"repobilityId": "15f774e27863eb74", "scanner": "scanner-primary", "fingerprint": "f3bab61176f454ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60f904c60f5affa2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/alias-bundle.ts:182"}, "properties": {"repobilityId": "9181e9980998e6f5", "scanner": "scanner-primary", "fingerprint": "60f904c60f5affa2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2efcdba73db97759", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/gh-client.ts:4"}, "properties": {"repobilityId": "bd4ad8df6e24a17d", "scanner": "scanner-primary", "fingerprint": "2efcdba73db97759", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c28435ffcc84ee2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/alias-bundle-core.ts:1"}, "properties": {"repobilityId": "fc7985878673383c", "scanner": "scanner-primary", "fingerprint": "c28435ffcc84ee2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84c7cb010279abc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/subprocess.ts:80"}, "properties": {"repobilityId": "d04ac8391d69d925", "scanner": "scanner-primary", "fingerprint": "84c7cb010279abc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9fa59a1bcc16aec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/ipc-client.ts:166"}, "properties": {"repobilityId": "f8b9ce3ac5f1bfe4", "scanner": "scanner-primary", "fingerprint": "e9fa59a1bcc16aec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e3deb481eee1f7e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/claude-patch/strategies.ts:157"}, "properties": {"repobilityId": "11abd6e568dbfe75", "scanner": "scanner-primary", "fingerprint": "1e3deb481eee1f7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c46cc1f828b67bb6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/claude-patch/patcher.spec.ts:47"}, "properties": {"repobilityId": "457d2c051062fde7", "scanner": "scanner-primary", "fingerprint": "c46cc1f828b67bb6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3315a8d8708d61f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/command/src/daemon-lifecycle.spec.ts:586"}, "properties": {"repobilityId": "3175a84d15682cb6", "scanner": "scanner-primary", "fingerprint": "3315a8d8708d61f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0c059b91e84d055", "level": "note", "message": {"text": "Legacy-named symbol `feedback_old` in packages/command/src/commands/memory.spec.ts:136"}, "properties": {"repobilityId": "4eda3646c9bc5701", "scanner": "scanner-primary", "fingerprint": "a0c059b91e84d055", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3d4ae31c10d85d6d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/command/src/commands/phase.ts:731"}, "properties": {"repobilityId": "62fa75c309689a51", "scanner": "scanner-primary", "fingerprint": "3d4ae31c10d85d6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a94002902b32596c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/vfs.ts:347"}, "properties": {"repobilityId": "a1755982763cfdf4", "scanner": "scanner-primary", "fingerprint": "a94002902b32596c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5674ed51e96d56fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/command/src/commands/agent.spec.ts:323"}, "properties": {"repobilityId": "b23b6bcaff586158", "scanner": "scanner-primary", "fingerprint": "5674ed51e96d56fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6de3d3f69fc9039", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/commands/upgrade.ts:148"}, "properties": {"repobilityId": "f8543c4b32d08919", "scanner": "scanner-primary", "fingerprint": "c6de3d3f69fc9039", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5aed368d90eb3b69", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/command/src/commands/claude.spec.ts:158"}, "properties": {"repobilityId": "09564d5a40df4209", "scanner": "scanner-primary", "fingerprint": "5aed368d90eb3b69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8f1443ae0bcf419", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/command/src/commands/gc.ts:244"}, "properties": {"repobilityId": "37dbc2d9b3f3b15a", "scanner": "scanner-primary", "fingerprint": "c8f1443ae0bcf419", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b000de5be557fef3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/command/src/registry/client.ts:5"}, "properties": {"repobilityId": "71498cdcb00f2203", "scanner": "scanner-primary", "fingerprint": "b000de5be557fef3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe90452eed8c7326", "level": "none", "message": {"text": "Commented-code block (6 lines) in agent-grid/src/replay.spec.ts:710"}, "properties": {"repobilityId": "778f5ffbc3f52fa6", "scanner": "scanner-primary", "fingerprint": "fe90452eed8c7326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-357a86ae0fb8efae", "level": "none", "message": {"text": "Commented-code block (10 lines) in agent-grid/src/replay.ts:407"}, "properties": {"repobilityId": "ed96f9457ee5e083", "scanner": "scanner-primary", "fingerprint": "357a86ae0fb8efae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cb92bcc62f05a56", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/phases/qa-fn.ts:8"}, "properties": {"repobilityId": "03390e86feb3ba8e", "scanner": "scanner-primary", "fingerprint": "5cb92bcc62f05a56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b72ea5a2832ab92", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/phases/done-fn.ts:119"}, "properties": {"repobilityId": "8ba3b51ef879f8d4", "scanner": "scanner-primary", "fingerprint": "6b72ea5a2832ab92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbbb2d195215571b", "level": "none", "message": {"text": "Commented-code block (9 lines) in .claude/phases/review-fn.ts:8"}, "properties": {"repobilityId": "c637464551abdcb2", "scanner": "scanner-primary", "fingerprint": "bbbb2d195215571b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3293a59a2480b64", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/phases/phase-types.ts:95"}, "properties": {"repobilityId": "1ce04125fd9cfee6", "scanner": "scanner-primary", "fingerprint": "d3293a59a2480b64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f50605abb453f5aa", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/workflows/sprint-lessons.js:14"}, "properties": {"repobilityId": "f29d1caf16ce4710", "scanner": "scanner-primary", "fingerprint": "f50605abb453f5aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4a312682328c19c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/skills/estimate/embed.ts:51"}, "properties": {"repobilityId": "f1dbd2459122f476", "scanner": "scanner-primary", "fingerprint": "f4a312682328c19c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa02c7277e3f1d0a", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/skills/why/why-workflow.js:11"}, "properties": {"repobilityId": "a4fc8c897157ec2d", "scanner": "scanner-primary", "fingerprint": "aa02c7277e3f1d0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caa68d995b794f69", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (test/session-result-sse.integration.spec.ts:51)"}, "properties": {"repobilityId": "63ffb49618c96e8a", "scanner": "scanner-primary", "fingerprint": "caa68d995b794f69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-28e524fc3336934f", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (test/harness.ts:275)"}, "properties": {"repobilityId": "4aa83477d62d9ec4", "scanner": "scanner-primary", "fingerprint": "28e524fc3336934f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ad3617d301e28c97", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${assignedPort}/ (scripts/rules/fixtures/no-hardcoded-test-port__clean.fixture.ts:26)"}, "properties": {"repobilityId": "a523736085ccde4d", "scanner": "scanner-primary", "fingerprint": "ad3617d301e28c97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a775de9357273379", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${server.port}/ (scripts/bun-segfault-repro/worker.ts:28)"}, "properties": {"repobilityId": "d0f90170b3576477", "scanner": "scanner-primary", "fingerprint": "a775de9357273379", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b05ad4900a59c8e", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost${path} (packages/daemon/src/ipc-server.spec.ts:120)"}, "properties": {"repobilityId": "9ce29dc481d0cd90", "scanner": "scanner-primary", "fingerprint": "6b05ad4900a59c8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e617de95f1f2d18", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:211)"}, "properties": {"repobilityId": "07c0ec1bf17fc308", "scanner": "scanner-primary", "fingerprint": "2e617de95f1f2d18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c3a0007e2ffec075", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/logs (packages/daemon/src/ipc-server.spec.ts:444)"}, "properties": {"repobilityId": "fffcef58d3769ad9", "scanner": "scanner-primary", "fingerprint": "c3a0007e2ffec075", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55654e5b840caaa6", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:859)"}, "properties": {"repobilityId": "a9e430e5f9da265c", "scanner": "scanner-primary", "fingerprint": "55654e5b840caaa6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d71f9ca16522d552", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/metrics (packages/daemon/src/ipc-server.spec.ts:1296)"}, "properties": {"repobilityId": "2dfc445ec154d4e7", "scanner": "scanner-primary", "fingerprint": "d71f9ca16522d552", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1185bd45347b395", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=0 (packages/daemon/src/ipc-server.spec.ts:2018)"}, "properties": {"repobilityId": "a3cfe1a39ad6119a", "scanner": "scanner-primary", "fingerprint": "e1185bd45347b395", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86c1049460ae1031", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true&lines=10 (packages/daemon/src/ipc-server.spec.ts:2039)"}, "properties": {"repobilityId": "5a599126d80f7570", "scanner": "scanner-primary", "fingerprint": "86c1049460ae1031", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b816c0fca53c33f3", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/logs?server=myserver&lines=5 (packages/daemon/src/ipc-server.spec.ts:2077)"}, "properties": {"repobilityId": "754d48ca0547bdd3", "scanner": "scanner-primary", "fingerprint": "b816c0fca53c33f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e5a68bbf4cc0783f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2287)"}, "properties": {"repobilityId": "f8d18081ca292179", "scanner": "scanner-primary", "fingerprint": "e5a68bbf4cc0783f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fafd8f16d5db7f49", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:2300)"}, "properties": {"repobilityId": "f597acf2a6964b81", "scanner": "scanner-primary", "fingerprint": "fafd8f16d5db7f49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5f64e3179620a00e", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:2313)"}, "properties": {"repobilityId": "0d8575471906d3ad", "scanner": "scanner-primary", "fingerprint": "5f64e3179620a00e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25579bc616b3e3c1", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=${cursor} (packages/daemon/src/ipc-server.spec.ts:2328)"}, "properties": {"repobilityId": "109e86c39995a409", "scanner": "scanner-primary", "fingerprint": "25579bc616b3e3c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fc5c8c9c2044fabe", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2342)"}, "properties": {"repobilityId": "4bf59c065486abd3", "scanner": "scanner-primary", "fingerprint": "fc5c8c9c2044fabe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-30c74aa3cd1154c2", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2387)"}, "properties": {"repobilityId": "73df80a30d7ee67f", "scanner": "scanner-primary", "fingerprint": "30c74aa3cd1154c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c809dd2f9afefe1", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2422)"}, "properties": {"repobilityId": "f21b518675f7f0f3", "scanner": "scanner-primary", "fingerprint": "0c809dd2f9afefe1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-270fb5f31ff3395a", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:2455)"}, "properties": {"repobilityId": "9a52ae3cf4dc4591", "scanner": "scanner-primary", "fingerprint": "270fb5f31ff3395a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09c05432c1ce81b6", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:2490)"}, "properties": {"repobilityId": "b240d72601f1ea45", "scanner": "scanner-primary", "fingerprint": "09c05432c1ce81b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ca4d47a9fd8b8484", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:2538)"}, "properties": {"repobilityId": "a2138a595fa406d6", "scanner": "scanner-primary", "fingerprint": "ca4d47a9fd8b8484", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-26a0a696e6ca5f2d", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2587)"}, "properties": {"repobilityId": "0a8125a163004597", "scanner": "scanner-primary", "fingerprint": "26a0a696e6ca5f2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a59d002255ee869c", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?subscribe=mail&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:2644)"}, "properties": {"repobilityId": "993dda33c7e7bd4b", "scanner": "scanner-primary", "fingerprint": "a59d002255ee869c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-492b4ee8783bf422", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2693)"}, "properties": {"repobilityId": "5951f3d0fe7a206b", "scanner": "scanner-primary", "fingerprint": "492b4ee8783bf422", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-674b972d8b0b4aff", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=2 (packages/daemon/src/ipc-server.spec.ts:2763)"}, "properties": {"repobilityId": "4b2d89f9d8916839", "scanner": "scanner-primary", "fingerprint": "674b972d8b0b4aff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-afa26dadfb8fe77e", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2831)"}, "properties": {"repobilityId": "2410a916b7c89677", "scanner": "scanner-primary", "fingerprint": "afa26dadfb8fe77e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4e47e08d79f23143", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2881)"}, "properties": {"repobilityId": "94492110bb9c9907", "scanner": "scanner-primary", "fingerprint": "4e47e08d79f23143", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5648ca8b69f26d4f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:2900)"}, "properties": {"repobilityId": "042f85a8da8e08aa", "scanner": "scanner-primary", "fingerprint": "5648ca8b69f26d4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-796f685345d6dc24", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?type=pr.* (packages/daemon/src/ipc-server.spec.ts:2929)"}, "properties": {"repobilityId": "ce7125b58a23c61d", "scanner": "scanner-primary", "fingerprint": "796f685345d6dc24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b5056468939f49e7", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?phase=review (packages/daemon/src/ipc-server.spec.ts:3046)"}, "properties": {"repobilityId": "fc560d5e2342fb60", "scanner": "scanner-primary", "fingerprint": "b5056468939f49e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aff6f945f24c2251", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?subscribe=work_item&pr=42 (packages/daemon/src/ipc-server.spec.ts:3093)"}, "properties": {"repobilityId": "00723e9e64256316", "scanner": "scanner-primary", "fingerprint": "aff6f945f24c2251", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-38d431bc8f32e157", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0&subscribe=work_item (packages/daemon/src/ipc-server.spec.ts:3141)"}, "properties": {"repobilityId": "5a63adc95e533ff4", "scanner": "scanner-primary", "fingerprint": "38d431bc8f32e157", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ac4dbb5da205fad", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3183)"}, "properties": {"repobilityId": "41680893c87bd33b", "scanner": "scanner-primary", "fingerprint": "6ac4dbb5da205fad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eed8c5ce297cc6ef", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3225)"}, "properties": {"repobilityId": "f163053fea37beea", "scanner": "scanner-primary", "fingerprint": "eed8c5ce297cc6ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4309db693ed24914", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3267)"}, "properties": {"repobilityId": "58ca72845ac4d371", "scanner": "scanner-primary", "fingerprint": "4309db693ed24914", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1b518c48a180d4f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3330)"}, "properties": {"repobilityId": "aee1ce8cd43beee4", "scanner": "scanner-primary", "fingerprint": "f1b518c48a180d4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e4174d90c5b77430", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3458)"}, "properties": {"repobilityId": "b7dc7506e9c03ba3", "scanner": "scanner-primary", "fingerprint": "e4174d90c5b77430", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-93c6160768628560", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?pr=${encodeURIComponent(bad)} (packages/daemon/src/ipc-server.spec.ts:3488)"}, "properties": {"repobilityId": "f2e463a643d2073c", "scanner": "scanner-primary", "fingerprint": "93c6160768628560", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d69072a3eaf6bb94", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3502)"}, "properties": {"repobilityId": "9e6709745d2cc508", "scanner": "scanner-primary", "fingerprint": "d69072a3eaf6bb94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0eda85082d0ba4f7", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3518)"}, "properties": {"repobilityId": "58f897b0bc4c1b01", "scanner": "scanner-primary", "fingerprint": "0eda85082d0ba4f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3006b2be909141f3", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3564)"}, "properties": {"repobilityId": "dfd02fa016a90a0e", "scanner": "scanner-primary", "fingerprint": "3006b2be909141f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-062fb5d493a943bc", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3611)"}, "properties": {"repobilityId": "ccbb75f3a17798c9", "scanner": "scanner-primary", "fingerprint": "062fb5d493a943bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64d3f840b90ba9f8", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3653)"}, "properties": {"repobilityId": "f44382f3419b8ea9", "scanner": "scanner-primary", "fingerprint": "64d3f840b90ba9f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e3d5c3feb12b8be9", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3677)"}, "properties": {"repobilityId": "a2b8d36a59c2dbcc", "scanner": "scanner-primary", "fingerprint": "e3d5c3feb12b8be9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-35be7d1d9c669036", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3736)"}, "properties": {"repobilityId": "3418b441738e488e", "scanner": "scanner-primary", "fingerprint": "35be7d1d9c669036", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6818577970b445f7", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?subscribe=session (packages/daemon/src/ipc-server.spec.ts:3817)"}, "properties": {"repobilityId": "8775580bdd818945", "scanner": "scanner-primary", "fingerprint": "6818577970b445f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5938e9c57529f93d", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:3862)"}, "properties": {"repobilityId": "6f80c130fac75833", "scanner": "scanner-primary", "fingerprint": "5938e9c57529f93d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-51e8c97e13e6b28f", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:3897)"}, "properties": {"repobilityId": "32564e1b0a6f4921", "scanner": "scanner-primary", "fingerprint": "51e8c97e13e6b28f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4cabf707a793f6bc", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:3932)"}, "properties": {"repobilityId": "2aa687187c14bcda", "scanner": "scanner-primary", "fingerprint": "4cabf707a793f6bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc5f191097ea8159", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0 (packages/daemon/src/ipc-server.spec.ts:3979)"}, "properties": {"repobilityId": "ce244d48b77b45b7", "scanner": "scanner-primary", "fingerprint": "bc5f191097ea8159", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ac083bc64684b61", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=s1 (packages/daemon/src/ipc-server.spec.ts:4021)"}, "properties": {"repobilityId": "e1431fccfed271f8", "scanner": "scanner-primary", "fingerprint": "6ac083bc64684b61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b14abe0df9a65df9", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events?since=0&responseTail=other-session (packages/daemon/src/ipc-server.spec.ts:4063)"}, "properties": {"repobilityId": "5b4f3d138520566b", "scanner": "scanner-primary", "fingerprint": "b14abe0df9a65df9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c21e4213d015933", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4101)"}, "properties": {"repobilityId": "099f7ec188812840", "scanner": "scanner-primary", "fingerprint": "0c21e4213d015933", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7dff403f863c979c", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/events (packages/daemon/src/ipc-server.spec.ts:4128)"}, "properties": {"repobilityId": "3706224d01690065", "scanner": "scanner-primary", "fingerprint": "7dff403f863c979c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb26cd4c3782b8ee", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost/logs?daemon=true (packages/daemon/src/ipc-server.spec.ts:4178)"}, "properties": {"repobilityId": "cfef6286d2f95ca1", "scanner": "scanner-primary", "fingerprint": "cb26cd4c3782b8ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-225c90492aa67946", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4257)"}, "properties": {"repobilityId": "5517086a62a3e820", "scanner": "scanner-primary", "fingerprint": "225c90492aa67946", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e492894b48a3a11a", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4270)"}, "properties": {"repobilityId": "5e2c10674ef96aa3", "scanner": "scanner-primary", "fingerprint": "e492894b48a3a11a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-adf22ac4485ef2b2", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.spec.ts:4313)"}, "properties": {"repobilityId": "be718cae2477327b", "scanner": "scanner-primary", "fingerprint": "adf22ac4485ef2b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a0725ebae2f1b3bf", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/alias-state.spec.ts:88)"}, "properties": {"repobilityId": "011dd45fd8e75db7", "scanner": "scanner-primary", "fingerprint": "a0725ebae2f1b3bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-08d3e9a4054a8467", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost/rpc (packages/daemon/src/ipc-server.ts:71)"}, "properties": {"repobilityId": "5be71fc56a443515", "scanner": "scanner-primary", "fingerprint": "08d3e9a4054a8467", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32e2836da8603380", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${port}/callback?code=again (packages/daemon/src/auth/callback-server.spec.ts:129)"}, "properties": {"repobilityId": "d2fd1b2a3473030e", "scanner": "scanner-primary", "fingerprint": "32e2836da8603380", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54600ce45cdbc322", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${port}/session/nonexistent (packages/daemon/src/claude-session/ws-server.spec.ts:950)"}, "properties": {"repobilityId": "712fac867303a89a", "scanner": "scanner-primary", "fingerprint": "54600ce45cdbc322", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-456c5650e91b65a1", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:${port}/invalid (packages/daemon/src/claude-session/ws-server.spec.ts:959)"}, "properties": {"repobilityId": "d0d94372b090ae97", "scanner": "scanner-primary", "fingerprint": "456c5650e91b65a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efc9ed9c3b2a7150", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (.claude/skills/estimate/embed.ts:51)"}, "properties": {"repobilityId": "09e9df97473da3e1", "scanner": "scanner-primary", "fingerprint": "efc9ed9c3b2a7150", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4748872cb583c0fb", "level": "note", "message": {"text": "Unused endpoint: POST /session"}, "properties": {"repobilityId": "5e702ae96a07c17c", "scanner": "scanner-primary", "fingerprint": "4748872cb583c0fb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1daa53f3c56e6b16", "level": "note", "message": {"text": "Unused endpoint: GET /session"}, "properties": {"repobilityId": "7ddc67876189b205", "scanner": "scanner-primary", "fingerprint": "1daa53f3c56e6b16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}