{"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-1d4b5c5172637ca6", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteSnapshot.tsx:29", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteSnapshot.tsx:29"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df50f329fa7fa23e", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteRow.tsx:36", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteRow.tsx:36"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78f3dda42f28b962", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/SymbolSearch.tsx:240", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/SymbolSearch.tsx:240"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a7af03523c412ace", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/HomePage.tsx:318", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/HomePage.tsx:318"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7c38da924088bf0", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/symbol/FinancialsSection.tsx:379", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/symbol/FinancialsSection.tsx:379"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b472ad7995a7688", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/shell/SessionControl.tsx:16", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/shell/SessionControl.tsx:16"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a68f31e5de466783", "name": "`truncate` class without `title=` for hover reveal \u2014 web/src/screener/ScreenerWorkspace.tsx:621", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/screener/ScreenerWorkspace.tsx:621"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d36d073fad175cc8", "name": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/run-engine.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/run-engine.ts:122"}, "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-882368736fa70814", "name": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/dev.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/dev.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-59be5eb623ff1019", "name": "Stray `console.log` in TS/JS \u2014 services/notifications/src/worker.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/notifications/src/worker.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-e8413b5aa741e55f", "name": "Stray `console.log` in TS/JS \u2014 services/chat/src/dev.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/chat/src/dev.ts:60"}, "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-dea92b3321ba1261", "name": "Stray `console.log` in TS/JS \u2014 services/observability/src/drift-monitor-cli.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/observability/src/drift-monitor-cli.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-5953bdb1d35b3e29", "name": "Stray `console.log` in TS/JS \u2014 services/home/src/dev.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/home/src/dev.ts:41"}, "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-888fbe1e43a3324f", "name": "Stray `console.log` in TS/JS \u2014 services/screener-artifacts/src/weekly-reference-cli.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/screener-artifacts/src/weekly-reference-cli.ts:12"}, "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-4e7d383ffa5bcccf", "name": "Stray `console.log` in TS/JS \u2014 services/evidence/src/dev.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/evidence/src/dev.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-58674440db7e539f", "name": "Stray `console.log` in TS/JS \u2014 services/evidence/src/sec-filings-backfill-cli.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/evidence/src/sec-filings-backfill-cli.ts:56"}, "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-43c31085d2af799e", "name": "Stray `console.log` in TS/JS \u2014 services/resolver/src/repair-provider-identities.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/resolver/src/repair-provider-identities.ts:111"}, "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-033e4127f367affe", "name": "Stray `console.log` in TS/JS \u2014 services/resolver/src/dev.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/resolver/src/dev.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-a1af856951c09098", "name": "Stray `console.log` in TS/JS \u2014 services/portfolio/src/dev.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/portfolio/src/dev.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-13310376e9bceca9", "name": "Stray `console.log` in TS/JS \u2014 services/market/src/refresh-worker.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/market/src/refresh-worker.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-f3ad33e99b27426f", "name": "Stray `console.log` in TS/JS \u2014 services/market/src/dev.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/market/src/dev.ts:11"}, "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-766d7c9df718b367", "name": "Stray `console.log` in TS/JS \u2014 services/fundamentals/src/dev.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/fundamentals/src/dev.ts:70"}, "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-4ef2bf53ac9ddd01", "name": "Stray `console.log` in TS/JS \u2014 services/dev-api/src/dev.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/dev-api/src/dev.ts:10"}, "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-d424902034d5e942", "name": "Stray `console.log` in TS/JS \u2014 services/watchlists/src/dev.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/watchlists/src/dev.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-aa3835d30f9af549", "name": "Stray `console.log` in TS/JS \u2014 services/screener/src/dev.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 services/screener/src/dev.ts:33"}, "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-702c9555eecce822", "name": "Stray `console.log` in TS/JS \u2014 db/scripts/apply-schema.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/apply-schema.ts:27"}, "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-006134077d8cb8c6", "name": "Stray `console.log` in TS/JS \u2014 db/scripts/verify-schema.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/verify-schema.ts:35"}, "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-f61cf9b51f439a1b", "name": "Stray `console.log` in TS/JS \u2014 db/scripts/seed.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/seed.ts:27"}, "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-1d68ffe0301c0527", "name": "Stray `console.log` in TS/JS \u2014 db/scripts/migrate.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/migrate.ts:51"}, "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-483be1a3ce51acdd", "name": "Insecure pattern 'node_child_process' in scripts/dev-shell.test.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev-shell.test.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-462f8569600d811d", "name": "Possible secret in services/evidence/test/docker-minio.ts", "shortDescription": {"text": "Possible secret in services/evidence/test/docker-minio.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-fd764b4d3d2b559c", "name": "Possible secret in db/test/docker-pg.ts", "shortDescription": {"text": "Possible secret in db/test/docker-pg.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-3a39dbe93866d1b9", "name": "Very large file: services/dev-api/test/http.test.ts (2000 lines)", "shortDescription": {"text": "Very large file: services/dev-api/test/http.test.ts (2000 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-16c5265fba38561e", "name": "Very large file: services/snapshot/test/snapshot-verifier.test.ts (2164 lines)", "shortDescription": {"text": "Very large file: services/snapshot/test/snapshot-verifier.test.ts (2164 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-97788c2113745aea", "name": "Very large file: services/snapshot/src/snapshot-verifier.ts (2025 lines)", "shortDescription": {"text": "Very large file: services/snapshot/src/snapshot-verifier.ts (2025 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-ae50a492e85d46a6", "name": "Very large file: db/test/migrate.test.ts (1284 lines)", "shortDescription": {"text": "Very large file: db/test/migrate.test.ts (1284 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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "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 35 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 28 placeholder/mock markers across 19 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-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 license. 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-c37fb9c221665b89", "name": "Commented-code block (5 lines) in web/src/analyst-grids/resolveUniverseInput.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/analyst-grids/resolveUniverseInput.ts:39"}, "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-553e0e374aa2d516", "name": "Commented-code block (5 lines) in web/src/analyst-grids/GridTable.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/analyst-grids/GridTable.tsx:16"}, "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-be0410930a808984", "name": "Commented-code block (6 lines) in web/src/symbol/VerticalBars.tsx:12", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/symbol/VerticalBars.tsx:12"}, "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-5ac52e86fada2816", "name": "Commented-code block (6 lines) in web/src/symbol/consensusViews.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/symbol/consensusViews.tsx: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-16fb95e321545c4b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/symbol/themeRationale.ts:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/symbol/themeRationale.ts:22"}, "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-3b8cf850d0ad673e", "name": "Commented-code block (6 lines) in web/src/symbol/useSubjectQuote.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/symbol/useSubjectQuote.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-807790b4462f1290", "name": "Commented-code block (5 lines) in web/src/symbol/Sparkline.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/Sparkline.tsx: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-13600f90df62db76", "name": "Commented-code block (5 lines) in web/src/symbol/ChangePill.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/ChangePill.tsx: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-d5bad945a090f108", "name": "Commented-code block (5 lines) in web/src/symbol/format.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/format.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-93c71070ae1114d5", "name": "Commented-code block (7 lines) in web/src/symbol/surfaceStyles.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/symbol/surfaceStyles.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-046156e9ed0eb807", "name": "Commented-code block (6 lines) in web/src/symbol/distribution.ts:31", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/symbol/distribution.ts:31"}, "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-0684662caed3d893", "name": "Commented-code block (5 lines) in web/src/symbol/search.ts:168", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/search.ts:168"}, "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-21b4e6a223e95532", "name": "Commented-code block (5 lines) in web/src/symbol/consensus.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/consensus.ts:13"}, "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-98f1d3b24d8e9139", "name": "Commented-code block (5 lines) in web/src/symbol/quoteRowView.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/quoteRowView.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-b401aaaa7d2dae92", "name": "Commented-code block (6 lines) in web/src/symbol/series.ts:109", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/symbol/series.ts:109"}, "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-58365698d6571500", "name": "Commented-code block (5 lines) in web/src/symbol/quote.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/quote.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-7be328bf06b998ad", "name": "Commented-code block (5 lines) in web/src/symbol/signals.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/symbol/signals.ts:6"}, "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-a73b32adf1d5e51e", "name": "Commented-code block (6 lines) in web/src/chat/blockSnapshotTransform.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/chat/blockSnapshotTransform.ts:6"}, "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-43071662e6f3e4dd", "name": "Commented-code block (5 lines) in web/src/chat/useChatStream.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/chat/useChatStream.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-a1801fb15eb557d5", "name": "Commented-code block (6 lines) in web/src/chat/blockColumns.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/chat/blockColumns.ts:5"}, "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-c1f6f041dc7d1928", "name": "Commented-code block (5 lines) in web/src/chat/snapshotRefreshPromptCopy.test.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/chat/snapshotRefreshPromptCopy.test.ts:18"}, "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-d2f9eaa1d3311ab7", "name": "Commented-code block (7 lines) in web/src/chat/virtualWindow.test.ts:68", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/chat/virtualWindow.test.ts:68"}, "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-26184177bd0c2578", "name": "Commented-code block (6 lines) in web/src/chat/turnLayout.tsx:35", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/chat/turnLayout.tsx:35"}, "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-067582f88af84f50", "name": "Commented-code block (7 lines) in web/src/analyze/analyzeEntry.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/analyze/analyzeEntry.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-a3b257f08cae152d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/AnalyzePage.tsx:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/AnalyzePage.tsx:133"}, "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-33b39b2dd6d1dc76", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/SettingsPage.tsx:321", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/SettingsPage.tsx:321"}, "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-6666309786506095", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/ChatPage.sidebar.test.tsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/ChatPage.sidebar.test.tsx:70"}, "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-603ab36524da51d5", "name": "Commented-code block (5 lines) in web/src/pages/ReviewPage.tsx:97", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/pages/ReviewPage.tsx:97"}, "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-fa89689a0f669d7f", "name": "Commented-code block (6 lines) in web/src/pages/symbol/keyStatsGrid.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/pages/symbol/keyStatsGrid.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-c6d8064b2e1fd832", "name": "Commented-code block (5 lines) in web/src/portfolio/useSubjectHeld.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/portfolio/useSubjectHeld.ts:3"}, "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-17028f9b23633319", "name": "Commented-code block (5 lines) in web/src/portfolio/HeldRow.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/portfolio/HeldRow.tsx: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-116c20c486ad9ec4", "name": "Commented-code block (5 lines) in web/src/shell/SessionControl.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/SessionControl.tsx:3"}, "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-6212f2db125a7ead", "name": "Commented-code block (5 lines) in web/src/shell/authInterruptState.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/authInterruptState.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-9c4ec79f57e252f0", "name": "Commented-code block (5 lines) in web/src/shell/RightRailSlot.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/RightRailSlot.tsx:4"}, "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-cc3383b0d75318d2", "name": "Commented-code block (7 lines) in web/src/shell/WorkspaceShell.tsx:17", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/shell/WorkspaceShell.tsx:17"}, "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-a92ee67a9f82490a", "name": "Commented-code block (6 lines) in web/src/shell/useRightRailContent.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/shell/useRightRailContent.ts:4"}, "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-f105151a333524e4", "name": "Commented-code block (7 lines) in web/src/shell/SubjectDetailShell.tsx:30", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/shell/SubjectDetailShell.tsx:30"}, "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-7f243ef0cc0d7604", "name": "Commented-code block (5 lines) in web/src/shell/WatchlistSection.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/WatchlistSection.tsx: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-92623d7046a61514", "name": "Commented-code block (5 lines) in web/src/shell/AuthInterrupt.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/AuthInterrupt.tsx:5"}, "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-13beeccb06ef6256", "name": "Commented-code block (6 lines) in web/src/shell/AuthInterruptProvider.tsx:52", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/shell/AuthInterruptProvider.tsx: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-7f566eb9ef5f2aee", "name": "Commented-code block (5 lines) in web/src/shell/buttonStyles.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/shell/buttonStyles.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-f2c36c6ac08c5983", "name": "Commented-code block (6 lines) in web/src/watchlists/WatchlistProvider.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/watchlists/WatchlistProvider.tsx:5"}, "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-3b4b1520187ab900", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/watchlists/WatchlistProvider.tsx:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/watchlists/WatchlistProvider.tsx: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-76c5bb9ebab5edf0", "name": "Commented-code block (5 lines) in web/src/watchlists/watchlistSparklines.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/watchlists/watchlistSparklines.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-c85b60010e0a7b4d", "name": "Commented-code block (5 lines) in web/src/screener/queryTemplates.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/screener/queryTemplates.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-9193c5010142b36f", "name": "Commented-code block (6 lines) in web/src/screener/ScreenerWorkspace.tsx:60", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/screener/ScreenerWorkspace.tsx:60"}, "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-45c66505b74fed77", "name": "Commented-code block (5 lines) in web/src/screener/queryDraft.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/screener/queryDraft.ts:3"}, "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-344f49e3873aa75f", "name": "Commented-code block (6 lines) in web/src/screener/savedScreens.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/screener/savedScreens.ts:3"}, "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-73d73936100ab294", "name": "Commented-code block (6 lines) in web/src/screener/contracts.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/screener/contracts.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-3ff011f592a6d07c", "name": "Commented-code block (5 lines) in web/src/blocks/PerfComparison.tsx:19", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/blocks/PerfComparison.tsx:19"}, "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-57c56a1a3693f01f", "name": "Commented-code block (5 lines) in web/src/blocks/perfComparisonSeries.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/blocks/perfComparisonSeries.ts:6"}, "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-de83e6d3e6572f50", "name": "Commented-code block (5 lines) in web/src/blocks/layoutHint.ts:40", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/blocks/layoutHint.ts:40"}, "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-bc63dd9845ff7217", "name": "Commented-code block (8 lines) in web/src/blocks/RichText.tsx:22", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/blocks/RichText.tsx:22"}, "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-8c811da9019c2935", "name": "Commented-code block (6 lines) in web/src/blocks/severityTone.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/blocks/severityTone.ts:18"}, "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-3540b890b5c83817", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/analyst-grids/test/http-runs.test.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/analyst-grids/test/http-runs.test.ts:42"}, "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-927ba5f613e2fe5b", "name": "Commented-code block (5 lines) in services/analyst-grids/src/run-engine.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyst-grids/src/run-engine.ts:39"}, "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-0229689f132d2ab9", "name": "Commented-code block (7 lines) in services/analyst-grids/src/subject-normalization.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in services/analyst-grids/src/subject-normalization.ts:4"}, "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-5ffab9c570c7f2b2", "name": "Commented-code block (5 lines) in services/analyst-grids/src/reader-llm.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyst-grids/src/reader-llm.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-ffd006b03f96a3d4", "name": "Commented-code block (6 lines) in services/analyst-grids/src/reader-documents.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyst-grids/src/reader-documents.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-711887ab566643fa", "name": "Commented-code block (12 lines) in services/analyst-grids/src/period-context.ts:5", "shortDescription": {"text": "Commented-code block (12 lines) in services/analyst-grids/src/period-context.ts:5"}, "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-bef6cb9c04892eca", "name": "Commented-code block (6 lines) in services/themes/test/inferred-membership.test.ts:278", "shortDescription": {"text": "Commented-code block (6 lines) in services/themes/test/inferred-membership.test.ts:278"}, "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-be2faa0209287b47", "name": "Commented-code block (6 lines) in services/themes/test/theme-repo.integration.test.ts:14", "shortDescription": {"text": "Commented-code block (6 lines) in services/themes/test/theme-repo.integration.test.ts: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-621d9eed79f30e6b", "name": "Commented-code block (7 lines) in services/themes/test/inferred-membership.integration.test.ts:34", "shortDescription": {"text": "Commented-code block (7 lines) in services/themes/test/inferred-membership.integration.test.ts:34"}, "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-7052eaa5222a3899", "name": "Commented-code block (5 lines) in services/themes/test/theme-repo.test.ts:231", "shortDescription": {"text": "Commented-code block (5 lines) in services/themes/test/theme-repo.test.ts:231"}, "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-cca3ce763fec8843", "name": "Commented-code block (12 lines) in services/themes/src/inferred-membership.ts:22", "shortDescription": {"text": "Commented-code block (12 lines) in services/themes/src/inferred-membership.ts:22"}, "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-57032b0f712a8dae", "name": "Commented-code block (5 lines) in services/themes/src/theme-repo.ts:211", "shortDescription": {"text": "Commented-code block (5 lines) in services/themes/src/theme-repo.ts:211"}, "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-9da33188896eeeef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/http.test.ts:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/http.test.ts:249"}, "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-068f4bb7469f9b9f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/threads-http.test.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/threads-http.test.ts:33"}, "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-37599fe7cefa1799", "name": "Commented-code block (5 lines) in services/chat/test/bundle-routing.test.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in services/chat/test/bundle-routing.test.ts:35"}, "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-06257a1054ce6f44", "name": "Commented-code block (6 lines) in services/chat/test/sse-resume.test.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in services/chat/test/sse-resume.test.ts:16"}, "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-e7373f573b051263", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/sse-resume.test.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/sse-resume.test.ts:84"}, "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-3ee26eabb1ddd96d", "name": "Commented-code block (6 lines) in services/chat/src/local-runtime.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in services/chat/src/local-runtime.ts:56"}, "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-04a274af446e7857", "name": "Commented-code block (6 lines) in services/chat/src/local-runtime-structured.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in services/chat/src/local-runtime-structured.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-1218a766779a7e46", "name": "Commented-code block (5 lines) in services/chat/src/coordinator.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in services/chat/src/coordinator.ts:46"}, "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-07c5bb796d22a207", "name": "Commented-code block (6 lines) in services/chat/src/subject-extraction.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/chat/src/subject-extraction.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-7cfea057c2afa5d2", "name": "Commented-code block (5 lines) in services/observability/src/types.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in services/observability/src/types.ts:74"}, "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-8feb75b76cfa717a", "name": "Legacy-named symbol `halfLifeOld` in services/home/test/ranker.test.ts:130", "shortDescription": {"text": "Legacy-named symbol `halfLifeOld` in services/home/test/ranker.test.ts:130"}, "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-6e3a26203bd6d4c6", "name": "Commented-code block (5 lines) in services/home/src/secondary-types.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in services/home/src/secondary-types.ts:118"}, "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-afee95f0512796b8", "name": "Commented-code block (5 lines) in services/analyze/test/source-category-mapping.test.ts:165", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/test/source-category-mapping.test.ts:165"}, "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-8e92a9230e0ed96b", "name": "Commented-code block (6 lines) in services/analyze/test/template-runner.test.ts:314", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyze/test/template-runner.test.ts:314"}, "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-03fecb9f9da6c94c", "name": "Commented-code block (5 lines) in services/analyze/test/template-repo.integration.test.ts:122", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/test/template-repo.integration.test.ts:122"}, "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-b62b42a143683fd5", "name": "Commented-code block (6 lines) in services/analyze/test/template-runner.integration.test.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyze/test/template-runner.integration.test.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-14ff57c2c9f37be7", "name": "Commented-code block (5 lines) in services/analyze/test/template-repo.test.ts:341", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/test/template-repo.test.ts:341"}, "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-8fcdda3998afa371", "name": "Commented-code block (5 lines) in services/analyze/src/price-target-range-emitter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/price-target-range-emitter.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-ed4c1abf0572b18c", "name": "Commented-code block (5 lines) in services/analyze/src/revenue-bars-block-builder.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/revenue-bars-block-builder.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-229a39d2dafb4485", "name": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-emitter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-emitter.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-c26d11a752c631b3", "name": "Commented-code block (9 lines) in services/analyze/src/metric-direction.ts:5", "shortDescription": {"text": "Commented-code block (9 lines) in services/analyze/src/metric-direction.ts:5"}, "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-c9671679e1a1d54a", "name": "Commented-code block (5 lines) in services/analyze/src/metrics-comparison-emitter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/metrics-comparison-emitter.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-8fe3daea7f2dae31", "name": "Commented-code block (5 lines) in services/analyze/src/template-repo.ts:310", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/template-repo.ts:310"}, "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-5dc45fc30d412748", "name": "Commented-code block (9 lines) in services/analyze/src/template-runner.ts:9", "shortDescription": {"text": "Commented-code block (9 lines) in services/analyze/src/template-runner.ts:9"}, "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-9853448b116c1c17", "name": "Commented-code block (6 lines) in services/analyze/src/price-fact-materializer.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyze/src/price-fact-materializer.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-d46c607c9309fe85", "name": "Commented-code block (7 lines) in services/analyze/src/metrics-comparison-materializer.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in services/analyze/src/metrics-comparison-materializer.ts:4"}, "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-749e9109b1c0f8a8", "name": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-materializer.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-materializer.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-876d2d7e3af6bce1", "name": "Commented-code block (7 lines) in services/analyze/src/vendor-fact.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in services/analyze/src/vendor-fact.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-f14d09d154ac80d4", "name": "Commented-code block (7 lines) in services/analyze/src/source-category-mapping.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in services/analyze/src/source-category-mapping.ts:3"}, "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-f2a38e46d6cfeb40", "name": "Commented-code block (6 lines) in services/analyze/src/metrics-comparison-block-builder.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyze/src/metrics-comparison-block-builder.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-b81f3dad557ee45a", "name": "Commented-code block (6 lines) in services/analyze/src/revenue-bars-emitter.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/analyze/src/revenue-bars-emitter.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-92b6344992e9209b", "name": "Commented-code block (5 lines) in services/screener-artifacts/src/enrichment-writer.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/enrichment-writer.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-843b31cf391665fd", "name": "Commented-code block (5 lines) in services/screener-artifacts/src/universe-seed.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/universe-seed.ts:74"}, "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-6870525aed2d6125", "name": "Commented-code block (6 lines) in services/screener-artifacts/src/etl.ts:43", "shortDescription": {"text": "Commented-code block (6 lines) in services/screener-artifacts/src/etl.ts:43"}, "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-67d50f50f58c6e50", "name": "Commented-code block (6 lines) in services/screener-artifacts/src/types.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in services/screener-artifacts/src/types.ts:13"}, "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-4c4187eb6e51633b", "name": "Commented-code block (5 lines) in services/screener-artifacts/src/bundle.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/bundle.ts:29"}, "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-a703fdfe9e004294", "name": "Commented-code block (7 lines) in services/screener-artifacts/src/fact-mapper.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in services/screener-artifacts/src/fact-mapper.ts:3"}, "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-a65c0140eca4b076", "name": "Commented-code block (6 lines) in services/evidence/test/document-repo.test.ts:317", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/test/document-repo.test.ts:317"}, "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-2176bad626431b41", "name": "Commented-code block (8 lines) in services/evidence/test/news-ingest.integration.test.ts:102", "shortDescription": {"text": "Commented-code block (8 lines) in services/evidence/test/news-ingest.integration.test.ts:102"}, "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-b85e6c27059ea53e", "name": "Commented-code block (5 lines) in services/evidence/test/extract-tools.test.ts:160", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/test/extract-tools.test.ts:160"}, "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-532cb2997dd08a18", "name": "Commented-code block (10 lines) in services/evidence/test/news-ingest.test.ts:483", "shortDescription": {"text": "Commented-code block (10 lines) in services/evidence/test/news-ingest.test.ts:483"}, "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-be8d14a9f2f87bc3", "name": "Commented-code block (6 lines) in services/evidence/test/user-uploads.test.ts:73", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/test/user-uploads.test.ts:73"}, "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-ce1f8f504098a95b", "name": "Commented-code block (5 lines) in services/evidence/test/document-threading.test.ts:131", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/test/document-threading.test.ts:131"}, "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-aafe8bfb148b89e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/evidence/test/review-http.test.ts:117", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/evidence/test/review-http.test.ts:117"}, "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-1634c49453a6f1a9", "name": "Commented-code block (6 lines) in services/evidence/test/sec-edgar.integration.test.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/test/sec-edgar.integration.test.ts:16"}, "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-2fdc8ef26f147a3f", "name": "Commented-code block (6 lines) in services/evidence/src/local-runtime-evidence.ts:227", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/src/local-runtime-evidence.ts:227"}, "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-a916f30525e97776", "name": "Commented-code block (5 lines) in services/evidence/src/license-policy.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/src/license-policy.ts:13"}, "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-185e40f3762ebe3d", "name": "Legacy-named symbol `issuer_ir_rules_v1` in services/evidence/src/issuer-ir-extraction.ts:58", "shortDescription": {"text": "Legacy-named symbol `issuer_ir_rules_v1` in services/evidence/src/issuer-ir-extraction.ts:58"}, "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-ea4a5b7ad2d8c6fe", "name": "Commented-code block (5 lines) in services/evidence/src/s3-object-store.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/src/s3-object-store.ts:159"}, "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-560cb9ebb79509f2", "name": "Commented-code block (6 lines) in services/evidence/src/blob-gc-repo.ts:290", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/src/blob-gc-repo.ts:290"}, "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-9e4eb4af606243fd", "name": "Commented-code block (6 lines) in services/evidence/src/sec-edgar.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in services/evidence/src/sec-edgar.ts:3"}, "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-c2a0a2685f4b771d", "name": "Commented-code block (5 lines) in services/evidence/src/user-uploads.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/src/user-uploads.ts:3"}, "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-d8ddb16eaf590481", "name": "Commented-code block (7 lines) in services/evidence/src/sec-filings-backfill.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in services/evidence/src/sec-filings-backfill.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-9e15234779636f39", "name": "Commented-code block (5 lines) in services/evidence/src/news-ingest.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in services/evidence/src/news-ingest.ts:3"}, "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-66b96fbe57ab9a15", "name": "Commented-code block (8 lines) in services/evidence/src/inspector.ts:447", "shortDescription": {"text": "Commented-code block (8 lines) in services/evidence/src/inspector.ts:447"}, "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-ef841bee2dd31a5e", "name": "Commented-code block (8 lines) in services/evidence/src/reader/extract-tools.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in services/evidence/src/reader/extract-tools.ts:3"}, "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-862ec5511e4fd869", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/test/http.test.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/test/http.test.ts:196"}, "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-cdec2bce91f817f4", "name": "Commented-code block (5 lines) in services/resolver/test/normalize.test.ts:122", "shortDescription": {"text": "Commented-code block (5 lines) in services/resolver/test/normalize.test.ts:122"}, "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-8b873a6215d2d26a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/src/discovery.ts:433", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/src/discovery.ts:433"}, "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-e4319b78adad6f1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http.test.ts:19", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http.test.ts:19"}, "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-23719711993d7a88", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-overlays.test.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-overlays.test.ts:52"}, "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-91ec9e2b63f5848e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-holdings.test.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-holdings.test.ts:20"}, "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-2fd58f0b67826b86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/helpers.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/helpers.ts:42"}, "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-5f209686c11ccc2b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/auth-http.test.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/auth-http.test.ts:41"}, "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-b98b6b24b9eebe3c", "name": "Commented-code block (6 lines) in services/portfolio/src/overlays.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/portfolio/src/overlays.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-21b328066b017cca", "name": "Commented-code block (6 lines) in services/portfolio/src/queries.ts:236", "shortDescription": {"text": "Commented-code block (6 lines) in services/portfolio/src/queries.ts:236"}, "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-37e58b6920dfcfa1", "name": "Commented-code block (6 lines) in services/portfolio/src/holdings.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/portfolio/src/holdings.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-fe7052c14c32ff30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/market/test/http.test.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/market/test/http.test.ts:48"}, "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-dd87f7927d43b6f8", "name": "Legacy-named symbol `market_agent_unused` in services/market/test/stack.test.ts:12", "shortDescription": {"text": "Legacy-named symbol `market_agent_unused` in services/market/test/stack.test.ts:12"}, "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-9a50d49160b0b64e", "name": "Commented-code block (6 lines) in services/market/test/corporate-actions.test.ts:390", "shortDescription": {"text": "Commented-code block (6 lines) in services/market/test/corporate-actions.test.ts:390"}, "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-5684f09dd34179d2", "name": "Commented-code block (6 lines) in services/market/src/dev-fixtures.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/market/src/dev-fixtures.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-362b7860069d4114", "name": "Commented-code block (6 lines) in services/market/src/series-query.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/market/src/series-query.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-5cad1e34adbc1e4b", "name": "Commented-code block (6 lines) in services/market/src/corporate-actions.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/market/src/corporate-actions.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-f56ce211eb9d71a6", "name": "Commented-code block (5 lines) in services/market/src/http.ts:52", "shortDescription": {"text": "Commented-code block (5 lines) in services/market/src/http.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-57f56f543cb8a92f", "name": "Commented-code block (5 lines) in services/market/src/listings.ts:67", "shortDescription": {"text": "Commented-code block (5 lines) in services/market/src/listings.ts:67"}, "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-d70aaffce7c45ee5", "name": "Commented-code block (5 lines) in services/market/src/quote-refresh.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in services/market/src/quote-refresh.ts:30"}, "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-c6e3ac81c625b590", "name": "Commented-code block (6 lines) in services/tools/test/reader-tool-dispatcher.test.ts:594", "shortDescription": {"text": "Commented-code block (6 lines) in services/tools/test/reader-tool-dispatcher.test.ts:594"}, "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-1f9b1d98cc3865d5", "name": "Commented-code block (6 lines) in services/tools/test/fast-path.test.ts:140", "shortDescription": {"text": "Commented-code block (6 lines) in services/tools/test/fast-path.test.ts:140"}, "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-7e832425c245ee38", "name": "Commented-code block (10 lines) in services/tools/src/reader-tool-dispatcher.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in services/tools/src/reader-tool-dispatcher.ts:3"}, "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-ab8125f1949facf9", "name": "Commented-code block (5 lines) in services/tools/src/fast-path.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in services/tools/src/fast-path.ts:27"}, "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-73e5aa946944ad40", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/http.test.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/http.test.ts:74"}, "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-a78b085ff1ad7c82", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/stats.http.test.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/stats.http.test.ts:81"}, "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-b5f0d4d4071496a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/consensus.http.test.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/consensus.http.test.ts:75"}, "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-613df874a27a408d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/segments.http.test.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/segments.http.test.ts:75"}, "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-175ac046cb70c46d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/earnings.http.test.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/earnings.http.test.ts:78"}, "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-489358d6a49b9857", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/holders.http.test.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/holders.http.test.ts:69"}, "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-57e3bf0a64f6726d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/statements.http.test.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/statements.http.test.ts:79"}, "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-22fc637c615d3b6c", "name": "Commented-code block (5 lines) in services/fundamentals/src/dev-statement-fixtures.ts:229", "shortDescription": {"text": "Commented-code block (5 lines) in services/fundamentals/src/dev-statement-fixtures.ts:229"}, "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-35eb5033e3814c7a", "name": "Commented-code block (6 lines) in services/fundamentals/src/segment-facts.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in services/fundamentals/src/segment-facts.ts:3"}, "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-855cbfc87a3b4636", "name": "Commented-code block (7 lines) in services/fundamentals/src/sec-edgar.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in services/fundamentals/src/sec-edgar.ts:3"}, "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-e7ac9c08f9e14ba4", "name": "Commented-code block (5 lines) in services/fundamentals/src/fiscal-calendar.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in services/fundamentals/src/fiscal-calendar.ts:17"}, "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-ca89d801d6841c2f", "name": "Commented-code block (5 lines) in services/fundamentals/src/metric-mapper.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in services/fundamentals/src/metric-mapper.ts:3"}, "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-f9be1ca69081522c", "name": "Commented-code block (5 lines) in services/fundamentals/src/issuer-fundamentals-reader.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in services/fundamentals/src/issuer-fundamentals-reader.ts:86"}, "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-ac4d5f3edb69acc3", "name": "Commented-code block (5 lines) in services/fundamentals/src/peer-metrics.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/fundamentals/src/peer-metrics.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-bf4fd667f8285b84", "name": "Commented-code block (6 lines) in services/fundamentals/src/analyst-consensus.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in services/fundamentals/src/analyst-consensus.ts:9"}, "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-0e7c563cedc3e9a6", "name": "Commented-code block (7 lines) in services/artifact/src/share-to-chat.ts:92", "shortDescription": {"text": "Commented-code block (7 lines) in services/artifact/src/share-to-chat.ts:92"}, "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-b4a45a8152ce7a74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/http.test.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/http.test.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-e1231bc4d84453d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/local-runtime.integration.test.ts:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/local-runtime.integration.test.ts:203"}, "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-63019ae6ec1c62b0", "name": "Commented-code block (5 lines) in services/dev-api/test/revenue-bars-run.integration.test.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in services/dev-api/test/revenue-bars-run.integration.test.ts: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-6d2db6b0901ad169", "name": "Commented-code block (5 lines) in services/dev-api/test/peer-comparison-run.integration.test.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in services/dev-api/test/peer-comparison-run.integration.test.ts:20"}, "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-199c19cdfba104d2", "name": "Commented-code block (6 lines) in services/dev-api/src/dev-api-shared.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in services/dev-api/src/dev-api-shared.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-71b71967fe61bf9a", "name": "Commented-code block (5 lines) in services/dev-api/src/analyze-adapter.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/dev-api/src/analyze-adapter.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-fedd3b8f0643c3cd", "name": "Commented-code block (5 lines) in services/dev-api/src/analyze-fixture.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in services/dev-api/src/analyze-fixture.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-82d5fe4e4bf90f57", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http.test.ts:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http.test.ts:66"}, "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-025f92084032d072", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/auth-http.test.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/auth-http.test.ts:41"}, "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-3663419c1dc0f421", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http-crud.test.ts:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http-crud.test.ts:138"}, "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-3a4e355fce910d85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/screener/test/http.test.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/screener/test/http.test.ts:59"}, "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-ceb5c697d401e7d8", "name": "Commented-code block (8 lines) in services/screener/test/screen-subject.test.ts:174", "shortDescription": {"text": "Commented-code block (8 lines) in services/screener/test/screen-subject.test.ts:174"}, "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-2150a7abf658d1f5", "name": "Commented-code block (5 lines) in services/screener/test/delay-class-drift.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in services/screener/test/delay-class-drift.test.ts:6"}, "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-b93c4f13db4c0623", "name": "Commented-code block (6 lines) in services/screener/src/candidate-row.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in services/screener/src/candidate-row.ts:3"}, "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-b554b0548039f5a9", "name": "Commented-code block (11 lines) in services/screener/src/db-candidates-vendor.ts:3", "shortDescription": {"text": "Commented-code block (11 lines) in services/screener/src/db-candidates-vendor.ts:3"}, "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-4b38960bd1ec1659", "name": "Commented-code block (6 lines) in services/screener/src/subject-ref.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in services/screener/src/subject-ref.ts:6"}, "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-20e2ff6ef4cf4345", "name": "Commented-code block (7 lines) in services/screener/src/query.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in services/screener/src/query.ts:3"}, "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-1ed1ce70281306c4", "name": "Commented-code block (10 lines) in services/screener/src/candidate.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in services/screener/src/candidate.ts:3"}, "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-fd3ed4835161d638", "name": "Commented-code block (5 lines) in services/screener/src/screen-subject.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in services/screener/src/screen-subject.ts:3"}, "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-1e3508036f989c78", "name": "Commented-code block (6 lines) in services/screener/src/result.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in services/screener/src/result.ts:3"}, "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-c424f8324d904ddf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 services/snapshot/test/http.test.ts:194", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/snapshot/test/http.test.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-8ec2a46b2289e672", "name": "Commented-code block (8 lines) in services/snapshot/src/seal-input.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in services/snapshot/src/seal-input.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-2082b05b3a964e61", "name": "Commented-code block (6 lines) in services/snapshot/src/manifest-staging.ts:413", "shortDescription": {"text": "Commented-code block (6 lines) in services/snapshot/src/manifest-staging.ts:413"}, "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-f0aaa282efccb837", "name": "Commented-code block (7 lines) in db/test/migrate.test.ts:1020", "shortDescription": {"text": "Commented-code block (7 lines) in db/test/migrate.test.ts:1020"}, "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-8dc9a8d6f28f0c75", "name": "Frontend route `home` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `home` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c4023057f3af148", "name": "Frontend route `agents` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41d10179595129b5", "name": "Frontend route `review` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `review` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88cf01eced5e2d03", "name": "Frontend route `settings` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db717d49a884d193", "name": "Frontend route `chat` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `chat` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0908837a739d88c8", "name": "Frontend route `:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx", "shortDescription": {"text": "Frontend route `:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7bc6fee609e6afc2", "name": "Frontend route `screener` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `screener` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-25b036735c7a307a", "name": "Frontend route `analyze` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `analyze` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c05f6463e5300dec", "name": "Frontend route `analyst-grids` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `analyst-grids` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c17271e42bbe8183", "name": "Frontend route `symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/App.tsx", "shortDescription": {"text": "Frontend route `symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab44403aaca13c57", "name": "Frontend route `/chat/:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx", "shortDescription": {"text": "Frontend route `/chat/:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5cceed8e8acb492", "name": "Frontend route `/analyze` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx", "shortDescription": {"text": "Frontend route `/analyze` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68ca08d9442a6216", "name": "Frontend route `/symbol/issuer/financials` has no Link/navigate to it \u2014 web/src/pages/symbol/FinancialsSection.test.tsx", "shortDescription": {"text": "Frontend route `/symbol/issuer/financials` has no Link/navigate to it \u2014 web/src/pages/symbol/FinancialsSection.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2765ebc09a4e0e7e", "name": "Frontend route `/symbol/listing/overview` has no Link/navigate to it \u2014 web/src/pages/symbol/OverviewSection.test.tsx", "shortDescription": {"text": "Frontend route `/symbol/listing/overview` has no Link/navigate to it \u2014 web/src/pages/symbol/OverviewSection.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f069b3fe1c556a2f", "name": "Frontend route `/symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/shell/SubjectDetailShell.test.tsx", "shortDescription": {"text": "Frontend route `/symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/shell/SubjectDetailShell.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4e968fb2baf0100", "name": "FastAPI POST `market_quote` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:65", "shortDescription": {"text": "FastAPI POST `market_quote` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:65"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f49fa0d3ea3288b6", "name": "FastAPI POST `market_daily_bars` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:94", "shortDescription": {"text": "FastAPI POST `market_daily_bars` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:94"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d73f428dc1b8f623", "name": "FastAPI POST `reference_profile` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:144", "shortDescription": {"text": "FastAPI POST `reference_profile` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:144"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fde238a2a05a7d3", "name": "FastAPI POST `fundamentals_earnings` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:172", "shortDescription": {"text": "FastAPI POST `fundamentals_earnings` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:172"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe5f3fb81df1a277", "name": "FastAPI POST `fundamentals_consensus` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:204", "shortDescription": {"text": "FastAPI POST `fundamentals_consensus` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:204"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0923ffa07d81a2e", "name": "FastAPI POST `fundamentals_holders` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:236", "shortDescription": {"text": "FastAPI POST `fundamentals_holders` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:236"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5512536966522163", "name": "Dangling fetch: GET /v1/themes/membership-rationales?${params.toString()} (web/src/symbol/themeRationale.ts:22)", "shortDescription": {"text": "Dangling fetch: GET /v1/themes/membership-rationales?${params.toString()} (web/src/symbol/themeRationale.ts:22)"}, "fullDescription": {"text": "`web/src/symbol/themeRationale.ts:22` calls `GET /v1/themes/membership-rationales?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/themes/membership-rationales`\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-6ee0635cffa6c524", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:53)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:53)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:53` calls `GET http://127.0.0.1:${port}/v1/home/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/summary`\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-43f813292143e42f", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:63)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:63)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:63` calls `GET http://127.0.0.1:${port}/v1/home/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/summary`\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-4fdf287b61b609e5", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:75)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:75)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:75` calls `GET http://127.0.0.1:${port}/v1/home/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/summary`\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-1e358d526fae96d5", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/something-else (services/home/test/http.test.ts:94)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/something-else (services/home/test/http.test.ts:94)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:94` calls `GET http://127.0.0.1:${port}/v1/home/something-else` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/something-else`\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-f687054368ae66b1", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/healthz (services/home/test/http.test.ts:104)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/healthz (services/home/test/http.test.ts:104)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:104` calls `GET http://127.0.0.1:${port}/v1/home/healthz` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/healthz`\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-f05e6132c16e451d", "name": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:126)", "shortDescription": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:126)"}, "fullDescription": {"text": "`services/home/test/http.test.ts:126` calls `GET http://127.0.0.1:${port}/v1/home/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/127.0.0.1:/<p>/v1/home/summary`\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-09309eafebeedef7", "name": "Dangling fetch: GET /v3/reference/tickers?${params.toString()} (services/resolver/src/discovery.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /v3/reference/tickers?${params.toString()} (services/resolver/src/discovery.ts:141)"}, "fullDescription": {"text": "`services/resolver/src/discovery.ts:141` calls `GET /v3/reference/tickers?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/reference/tickers`\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-6e3492c8394bf7be", "name": "Dangling fetch: GET /v2/snapshot/locale/us/markets/stocks/tickers/AMD (services/market/test/adapters/polygon.test.ts:35)", "shortDescription": {"text": "Dangling fetch: GET /v2/snapshot/locale/us/markets/stocks/tickers/AMD (services/market/test/adapters/polygon.test.ts:35)"}, "fullDescription": {"text": "`services/market/test/adapters/polygon.test.ts:35` calls `GET /v2/snapshot/locale/us/markets/stocks/tickers/AMD` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/snapshot/locale/us/markets/stocks/tickers/amd`\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-5401ea3172bc8b92", "name": "Unused endpoint: GET /reference/ticker/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /reference/ticker/{ticker}"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `GET /reference/ticker/{ticker}` 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-3f24199d2e5682d0", "name": "Unused endpoint: POST /market/quote", "shortDescription": {"text": "Unused endpoint: POST /market/quote"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /market/quote` 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-fd7b9e28d36f93c6", "name": "Unused endpoint: POST /market/daily-bars", "shortDescription": {"text": "Unused endpoint: POST /market/daily-bars"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /market/daily-bars` 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-baf794a62c2b82de", "name": "Unused endpoint: POST /reference/profile", "shortDescription": {"text": "Unused endpoint: POST /reference/profile"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /reference/profile` 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-9305177dde089efd", "name": "Unused endpoint: POST /fundamentals/earnings", "shortDescription": {"text": "Unused endpoint: POST /fundamentals/earnings"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /fundamentals/earnings` 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-72b17d52a1df31af", "name": "Unused endpoint: POST /fundamentals/consensus", "shortDescription": {"text": "Unused endpoint: POST /fundamentals/consensus"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /fundamentals/consensus` 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-5b4b084ce633e3e7", "name": "Unused endpoint: POST /fundamentals/holders", "shortDescription": {"text": "Unused endpoint: POST /fundamentals/holders"}, "fullDescription": {"text": "`services/dev-providers/dev_providers/main.py` declares `POST /fundamentals/holders` 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/22962"}, "properties": {"repository": "xang1234/market-agent", "repoUrl": "https://github.com/xang1234/market-agent", "branch": "main"}, "results": [{"ruleId": "scanner-1d4b5c5172637ca6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteSnapshot.tsx:29"}, "properties": {"repobilityId": "02616be0fe0a40e8", "scanner": "scanner-primary", "fingerprint": "1d4b5c5172637ca6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df50f329fa7fa23e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/QuoteRow.tsx:36"}, "properties": {"repobilityId": "fb6fc481f7f43059", "scanner": "scanner-primary", "fingerprint": "df50f329fa7fa23e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-78f3dda42f28b962", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/symbol/SymbolSearch.tsx:240"}, "properties": {"repobilityId": "ea43b3f3ab4f404f", "scanner": "scanner-primary", "fingerprint": "78f3dda42f28b962", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7af03523c412ace", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/HomePage.tsx:318"}, "properties": {"repobilityId": "4bce5130d400f0fe", "scanner": "scanner-primary", "fingerprint": "a7af03523c412ace", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d7c38da924088bf0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/pages/symbol/FinancialsSection.tsx:379"}, "properties": {"repobilityId": "648cf1bfd82075d5", "scanner": "scanner-primary", "fingerprint": "d7c38da924088bf0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4b472ad7995a7688", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/shell/SessionControl.tsx:16"}, "properties": {"repobilityId": "56bf6438cc9099e3", "scanner": "scanner-primary", "fingerprint": "4b472ad7995a7688", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a68f31e5de466783", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 web/src/screener/ScreenerWorkspace.tsx:621"}, "properties": {"repobilityId": "404105a79ec51269", "scanner": "scanner-primary", "fingerprint": "a68f31e5de466783", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d36d073fad175cc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/run-engine.ts:122"}, "properties": {"repobilityId": "05e415cfe661a76b", "scanner": "scanner-primary", "fingerprint": "d36d073fad175cc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-882368736fa70814", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/analyst-grids/src/dev.ts:17"}, "properties": {"repobilityId": "79641b275a01146d", "scanner": "scanner-primary", "fingerprint": "882368736fa70814", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59be5eb623ff1019", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/notifications/src/worker.ts:42"}, "properties": {"repobilityId": "9cd9602e7e5d63bd", "scanner": "scanner-primary", "fingerprint": "59be5eb623ff1019", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8413b5aa741e55f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/chat/src/dev.ts:60"}, "properties": {"repobilityId": "239f2317bf468292", "scanner": "scanner-primary", "fingerprint": "e8413b5aa741e55f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dea92b3321ba1261", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/observability/src/drift-monitor-cli.ts:36"}, "properties": {"repobilityId": "11d142d2324f68c1", "scanner": "scanner-primary", "fingerprint": "dea92b3321ba1261", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5953bdb1d35b3e29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/home/src/dev.ts:41"}, "properties": {"repobilityId": "abdcc864e177b482", "scanner": "scanner-primary", "fingerprint": "5953bdb1d35b3e29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-888fbe1e43a3324f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/screener-artifacts/src/weekly-reference-cli.ts:12"}, "properties": {"repobilityId": "ab5fb9f4e2772156", "scanner": "scanner-primary", "fingerprint": "888fbe1e43a3324f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e7d383ffa5bcccf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/evidence/src/dev.ts:17"}, "properties": {"repobilityId": "83a43b323845e1c9", "scanner": "scanner-primary", "fingerprint": "4e7d383ffa5bcccf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58674440db7e539f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/evidence/src/sec-filings-backfill-cli.ts:56"}, "properties": {"repobilityId": "5f7eb98b7ef9423c", "scanner": "scanner-primary", "fingerprint": "58674440db7e539f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43c31085d2af799e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/resolver/src/repair-provider-identities.ts:111"}, "properties": {"repobilityId": "3d718142a719b6b5", "scanner": "scanner-primary", "fingerprint": "43c31085d2af799e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-033e4127f367affe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/resolver/src/dev.ts:42"}, "properties": {"repobilityId": "3e6051b8732c247e", "scanner": "scanner-primary", "fingerprint": "033e4127f367affe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1af856951c09098", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/portfolio/src/dev.ts:16"}, "properties": {"repobilityId": "f018a7ee24f1b267", "scanner": "scanner-primary", "fingerprint": "a1af856951c09098", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13310376e9bceca9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/market/src/refresh-worker.ts:24"}, "properties": {"repobilityId": "a7428040ba44dedd", "scanner": "scanner-primary", "fingerprint": "13310376e9bceca9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3ad33e99b27426f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/market/src/dev.ts:11"}, "properties": {"repobilityId": "4a189a39cf747182", "scanner": "scanner-primary", "fingerprint": "f3ad33e99b27426f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-766d7c9df718b367", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/fundamentals/src/dev.ts:70"}, "properties": {"repobilityId": "33bb6edcfc69e1fe", "scanner": "scanner-primary", "fingerprint": "766d7c9df718b367", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ef2bf53ac9ddd01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/dev-api/src/dev.ts:10"}, "properties": {"repobilityId": "00de02c3ec7ede39", "scanner": "scanner-primary", "fingerprint": "4ef2bf53ac9ddd01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d424902034d5e942", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/watchlists/src/dev.ts:16"}, "properties": {"repobilityId": "3d545e725f596915", "scanner": "scanner-primary", "fingerprint": "d424902034d5e942", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa3835d30f9af549", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 services/screener/src/dev.ts:33"}, "properties": {"repobilityId": "715f27fc99df761b", "scanner": "scanner-primary", "fingerprint": "aa3835d30f9af549", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-702c9555eecce822", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/apply-schema.ts:27"}, "properties": {"repobilityId": "04f551ef8c253d8e", "scanner": "scanner-primary", "fingerprint": "702c9555eecce822", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-006134077d8cb8c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/verify-schema.ts:35"}, "properties": {"repobilityId": "e549300034c67e9f", "scanner": "scanner-primary", "fingerprint": "006134077d8cb8c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f61cf9b51f439a1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/seed.ts:27"}, "properties": {"repobilityId": "68bc561c54d47cb4", "scanner": "scanner-primary", "fingerprint": "f61cf9b51f439a1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d68ffe0301c0527", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 db/scripts/migrate.ts:51"}, "properties": {"repobilityId": "e4a5dfdd09d662fd", "scanner": "scanner-primary", "fingerprint": "1d68ffe0301c0527", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-483be1a3ce51acdd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev-shell.test.ts:2"}, "properties": {"repobilityId": "8b195073ae3ffddf", "scanner": "scanner-primary", "fingerprint": "483be1a3ce51acdd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-shell.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-462f8569600d811d", "level": "error", "message": {"text": "Possible secret in services/evidence/test/docker-minio.ts"}, "properties": {"repobilityId": "894932db6c8562cd", "scanner": "scanner-primary", "fingerprint": "462f8569600d811d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/evidence/test/docker-minio.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-fd764b4d3d2b559c", "level": "error", "message": {"text": "Possible secret in db/test/docker-pg.ts"}, "properties": {"repobilityId": "988e7053cbadc3c3", "scanner": "scanner-primary", "fingerprint": "fd764b4d3d2b559c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "db/test/docker-pg.ts"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-3a39dbe93866d1b9", "level": "note", "message": {"text": "Very large file: services/dev-api/test/http.test.ts (2000 lines)"}, "properties": {"repobilityId": "00e5e45e66ae648f", "scanner": "scanner-primary", "fingerprint": "3a39dbe93866d1b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16c5265fba38561e", "level": "note", "message": {"text": "Very large file: services/snapshot/test/snapshot-verifier.test.ts (2164 lines)"}, "properties": {"repobilityId": "f15c3d00848c8fb1", "scanner": "scanner-primary", "fingerprint": "16c5265fba38561e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-97788c2113745aea", "level": "note", "message": {"text": "Very large file: services/snapshot/src/snapshot-verifier.ts (2025 lines)"}, "properties": {"repobilityId": "fa96373eda7f4f05", "scanner": "scanner-primary", "fingerprint": "97788c2113745aea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ae50a492e85d46a6", "level": "note", "message": {"text": "Very large file: db/test/migrate.test.ts (1284 lines)"}, "properties": {"repobilityId": "51688cda7ec76bd4", "scanner": "scanner-primary", "fingerprint": "ae50a492e85d46a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f99d04e0986057c3", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "09bfb298cc153afe", "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": "11c4cb6ba51828a8", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "040c3e54ac478978", "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": "4467cdc40982524e", "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": "3b72c5d334a97356", "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": "ded7799c11581826", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c37fb9c221665b89", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/analyst-grids/resolveUniverseInput.ts:39"}, "properties": {"repobilityId": "467afe409a54d62d", "scanner": "scanner-primary", "fingerprint": "c37fb9c221665b89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-553e0e374aa2d516", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/analyst-grids/GridTable.tsx:16"}, "properties": {"repobilityId": "749eac791b874447", "scanner": "scanner-primary", "fingerprint": "553e0e374aa2d516", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be0410930a808984", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/symbol/VerticalBars.tsx:12"}, "properties": {"repobilityId": "1b4c033eda28fde9", "scanner": "scanner-primary", "fingerprint": "be0410930a808984", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ac52e86fada2816", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/symbol/consensusViews.tsx:1"}, "properties": {"repobilityId": "a18d0b27fd9e81e7", "scanner": "scanner-primary", "fingerprint": "5ac52e86fada2816", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16fb95e321545c4b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/symbol/themeRationale.ts:22"}, "properties": {"repobilityId": "8d087a289cc032f1", "scanner": "scanner-primary", "fingerprint": "16fb95e321545c4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b8cf850d0ad673e", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/symbol/useSubjectQuote.ts:1"}, "properties": {"repobilityId": "39ae3de2e8d80787", "scanner": "scanner-primary", "fingerprint": "3b8cf850d0ad673e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-807790b4462f1290", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/Sparkline.tsx:1"}, "properties": {"repobilityId": "503b0fd712452630", "scanner": "scanner-primary", "fingerprint": "807790b4462f1290", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13600f90df62db76", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/ChangePill.tsx:1"}, "properties": {"repobilityId": "0a9b181fb10096ae", "scanner": "scanner-primary", "fingerprint": "13600f90df62db76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5bad945a090f108", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/format.ts:1"}, "properties": {"repobilityId": "7f4653bdb84c469f", "scanner": "scanner-primary", "fingerprint": "d5bad945a090f108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93c71070ae1114d5", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/symbol/surfaceStyles.ts:1"}, "properties": {"repobilityId": "e8b70a311ad1b65a", "scanner": "scanner-primary", "fingerprint": "93c71070ae1114d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-046156e9ed0eb807", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/symbol/distribution.ts:31"}, "properties": {"repobilityId": "4f6a4aff6b856177", "scanner": "scanner-primary", "fingerprint": "046156e9ed0eb807", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0684662caed3d893", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/search.ts:168"}, "properties": {"repobilityId": "1945d3ad44823d4a", "scanner": "scanner-primary", "fingerprint": "0684662caed3d893", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21b4e6a223e95532", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/consensus.ts:13"}, "properties": {"repobilityId": "f44a568e40ae63de", "scanner": "scanner-primary", "fingerprint": "21b4e6a223e95532", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98f1d3b24d8e9139", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/quoteRowView.ts:1"}, "properties": {"repobilityId": "ad1cb15cd2e21aa0", "scanner": "scanner-primary", "fingerprint": "98f1d3b24d8e9139", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b401aaaa7d2dae92", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/symbol/series.ts:109"}, "properties": {"repobilityId": "a82c1f184d2f1347", "scanner": "scanner-primary", "fingerprint": "b401aaaa7d2dae92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58365698d6571500", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/quote.ts:95"}, "properties": {"repobilityId": "4c33da4a6c5d2b02", "scanner": "scanner-primary", "fingerprint": "58365698d6571500", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7be328bf06b998ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/symbol/signals.ts:6"}, "properties": {"repobilityId": "73ab23497d8222f5", "scanner": "scanner-primary", "fingerprint": "7be328bf06b998ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a73b32adf1d5e51e", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/chat/blockSnapshotTransform.ts:6"}, "properties": {"repobilityId": "820ceb90e3356b0d", "scanner": "scanner-primary", "fingerprint": "a73b32adf1d5e51e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43071662e6f3e4dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/chat/useChatStream.ts:8"}, "properties": {"repobilityId": "73a15b79c8fa8db0", "scanner": "scanner-primary", "fingerprint": "43071662e6f3e4dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1801fb15eb557d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/chat/blockColumns.ts:5"}, "properties": {"repobilityId": "2fb5b27a4cd55cce", "scanner": "scanner-primary", "fingerprint": "a1801fb15eb557d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1f6f041dc7d1928", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/chat/snapshotRefreshPromptCopy.test.ts:18"}, "properties": {"repobilityId": "7f1aa2f05305613e", "scanner": "scanner-primary", "fingerprint": "c1f6f041dc7d1928", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2f9eaa1d3311ab7", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/chat/virtualWindow.test.ts:68"}, "properties": {"repobilityId": "06ddc80951cfde77", "scanner": "scanner-primary", "fingerprint": "d2f9eaa1d3311ab7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26184177bd0c2578", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/chat/turnLayout.tsx:35"}, "properties": {"repobilityId": "b9a1e575218c9916", "scanner": "scanner-primary", "fingerprint": "26184177bd0c2578", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-067582f88af84f50", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/analyze/analyzeEntry.ts:1"}, "properties": {"repobilityId": "0b2e851de37bdcd4", "scanner": "scanner-primary", "fingerprint": "067582f88af84f50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3b257f08cae152d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/AnalyzePage.tsx:133"}, "properties": {"repobilityId": "422f14c8f632903e", "scanner": "scanner-primary", "fingerprint": "a3b257f08cae152d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33b39b2dd6d1dc76", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/SettingsPage.tsx:321"}, "properties": {"repobilityId": "a7546a7e48d44b87", "scanner": "scanner-primary", "fingerprint": "33b39b2dd6d1dc76", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6666309786506095", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/pages/ChatPage.sidebar.test.tsx:70"}, "properties": {"repobilityId": "11827f3a192b92e9", "scanner": "scanner-primary", "fingerprint": "6666309786506095", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-603ab36524da51d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/pages/ReviewPage.tsx:97"}, "properties": {"repobilityId": "770a62cab27284df", "scanner": "scanner-primary", "fingerprint": "603ab36524da51d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa89689a0f669d7f", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/pages/symbol/keyStatsGrid.ts:1"}, "properties": {"repobilityId": "9359dcd943e347fc", "scanner": "scanner-primary", "fingerprint": "fa89689a0f669d7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6d8064b2e1fd832", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/portfolio/useSubjectHeld.ts:3"}, "properties": {"repobilityId": "e2c5c83aba273b33", "scanner": "scanner-primary", "fingerprint": "c6d8064b2e1fd832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17028f9b23633319", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/portfolio/HeldRow.tsx:1"}, "properties": {"repobilityId": "b639f6f3d6c429d8", "scanner": "scanner-primary", "fingerprint": "17028f9b23633319", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-116c20c486ad9ec4", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/SessionControl.tsx:3"}, "properties": {"repobilityId": "e9a53b8716879af5", "scanner": "scanner-primary", "fingerprint": "116c20c486ad9ec4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6212f2db125a7ead", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/authInterruptState.ts:24"}, "properties": {"repobilityId": "11e5a14c1989d1de", "scanner": "scanner-primary", "fingerprint": "6212f2db125a7ead", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c4ec79f57e252f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/RightRailSlot.tsx:4"}, "properties": {"repobilityId": "298b4c845da552a8", "scanner": "scanner-primary", "fingerprint": "9c4ec79f57e252f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc3383b0d75318d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/shell/WorkspaceShell.tsx:17"}, "properties": {"repobilityId": "7b3ba2f25bc5480b", "scanner": "scanner-primary", "fingerprint": "cc3383b0d75318d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a92ee67a9f82490a", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/shell/useRightRailContent.ts:4"}, "properties": {"repobilityId": "a3d56aeccb061635", "scanner": "scanner-primary", "fingerprint": "a92ee67a9f82490a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f105151a333524e4", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/shell/SubjectDetailShell.tsx:30"}, "properties": {"repobilityId": "01902b3e291e7fda", "scanner": "scanner-primary", "fingerprint": "f105151a333524e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f243ef0cc0d7604", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/WatchlistSection.tsx:1"}, "properties": {"repobilityId": "831f7c3ed8e9ec0f", "scanner": "scanner-primary", "fingerprint": "7f243ef0cc0d7604", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92623d7046a61514", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/AuthInterrupt.tsx:5"}, "properties": {"repobilityId": "90c221bf558915ae", "scanner": "scanner-primary", "fingerprint": "92623d7046a61514", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13beeccb06ef6256", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/shell/AuthInterruptProvider.tsx:52"}, "properties": {"repobilityId": "6a5055903ddca222", "scanner": "scanner-primary", "fingerprint": "13beeccb06ef6256", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f566eb9ef5f2aee", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/shell/buttonStyles.ts:1"}, "properties": {"repobilityId": "dfec91d341fe3f39", "scanner": "scanner-primary", "fingerprint": "7f566eb9ef5f2aee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2c36c6ac08c5983", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/watchlists/WatchlistProvider.tsx:5"}, "properties": {"repobilityId": "9895e503adf221c7", "scanner": "scanner-primary", "fingerprint": "f2c36c6ac08c5983", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b4b1520187ab900", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/watchlists/WatchlistProvider.tsx:9"}, "properties": {"repobilityId": "4e53a718b21666b8", "scanner": "scanner-primary", "fingerprint": "3b4b1520187ab900", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-76c5bb9ebab5edf0", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/watchlists/watchlistSparklines.ts:1"}, "properties": {"repobilityId": "5e09d3b41cbfc930", "scanner": "scanner-primary", "fingerprint": "76c5bb9ebab5edf0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c85b60010e0a7b4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/screener/queryTemplates.ts:1"}, "properties": {"repobilityId": "a1e785787df55311", "scanner": "scanner-primary", "fingerprint": "c85b60010e0a7b4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9193c5010142b36f", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/screener/ScreenerWorkspace.tsx:60"}, "properties": {"repobilityId": "a9ba1377144de470", "scanner": "scanner-primary", "fingerprint": "9193c5010142b36f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45c66505b74fed77", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/screener/queryDraft.ts:3"}, "properties": {"repobilityId": "0c5edf1b8a880a5e", "scanner": "scanner-primary", "fingerprint": "45c66505b74fed77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-344f49e3873aa75f", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/screener/savedScreens.ts:3"}, "properties": {"repobilityId": "c8515e5b1c19483f", "scanner": "scanner-primary", "fingerprint": "344f49e3873aa75f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73d73936100ab294", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/screener/contracts.ts:1"}, "properties": {"repobilityId": "2e0f84cb73624c45", "scanner": "scanner-primary", "fingerprint": "73d73936100ab294", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ff011f592a6d07c", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/blocks/PerfComparison.tsx:19"}, "properties": {"repobilityId": "eecfe91b1b7acf7f", "scanner": "scanner-primary", "fingerprint": "3ff011f592a6d07c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57c56a1a3693f01f", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/blocks/perfComparisonSeries.ts:6"}, "properties": {"repobilityId": "3f2ec52ee478aa2c", "scanner": "scanner-primary", "fingerprint": "57c56a1a3693f01f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de83e6d3e6572f50", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/blocks/layoutHint.ts:40"}, "properties": {"repobilityId": "21b348870e2d11d7", "scanner": "scanner-primary", "fingerprint": "de83e6d3e6572f50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc63dd9845ff7217", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/blocks/RichText.tsx:22"}, "properties": {"repobilityId": "1fe6b4c376d333be", "scanner": "scanner-primary", "fingerprint": "bc63dd9845ff7217", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c811da9019c2935", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/blocks/severityTone.ts:18"}, "properties": {"repobilityId": "f2a6f907143f5084", "scanner": "scanner-primary", "fingerprint": "8c811da9019c2935", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3540b890b5c83817", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/analyst-grids/test/http-runs.test.ts:42"}, "properties": {"repobilityId": "3235e6eaf09d3ec7", "scanner": "scanner-primary", "fingerprint": "3540b890b5c83817", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-927ba5f613e2fe5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyst-grids/src/run-engine.ts:39"}, "properties": {"repobilityId": "c3e1423802c1bf17", "scanner": "scanner-primary", "fingerprint": "927ba5f613e2fe5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0229689f132d2ab9", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/analyst-grids/src/subject-normalization.ts:4"}, "properties": {"repobilityId": "dc90703dec89a5c5", "scanner": "scanner-primary", "fingerprint": "0229689f132d2ab9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ffab9c570c7f2b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyst-grids/src/reader-llm.ts:61"}, "properties": {"repobilityId": "15f8c3bbbe797d41", "scanner": "scanner-primary", "fingerprint": "5ffab9c570c7f2b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffd006b03f96a3d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyst-grids/src/reader-documents.ts:15"}, "properties": {"repobilityId": "5cf86bbe54dadf58", "scanner": "scanner-primary", "fingerprint": "ffd006b03f96a3d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-711887ab566643fa", "level": "none", "message": {"text": "Commented-code block (12 lines) in services/analyst-grids/src/period-context.ts:5"}, "properties": {"repobilityId": "bce2f38c50e24e5f", "scanner": "scanner-primary", "fingerprint": "711887ab566643fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bef6cb9c04892eca", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/themes/test/inferred-membership.test.ts:278"}, "properties": {"repobilityId": "b83c8b449e137559", "scanner": "scanner-primary", "fingerprint": "bef6cb9c04892eca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be2faa0209287b47", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/themes/test/theme-repo.integration.test.ts:14"}, "properties": {"repobilityId": "c8b97526f729c9ec", "scanner": "scanner-primary", "fingerprint": "be2faa0209287b47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-621d9eed79f30e6b", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/themes/test/inferred-membership.integration.test.ts:34"}, "properties": {"repobilityId": "2a4ab3c51b6a059f", "scanner": "scanner-primary", "fingerprint": "621d9eed79f30e6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7052eaa5222a3899", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/themes/test/theme-repo.test.ts:231"}, "properties": {"repobilityId": "6000835845388e24", "scanner": "scanner-primary", "fingerprint": "7052eaa5222a3899", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cca3ce763fec8843", "level": "none", "message": {"text": "Commented-code block (12 lines) in services/themes/src/inferred-membership.ts:22"}, "properties": {"repobilityId": "0e949da36e3a07c7", "scanner": "scanner-primary", "fingerprint": "cca3ce763fec8843", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57032b0f712a8dae", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/themes/src/theme-repo.ts:211"}, "properties": {"repobilityId": "f69e59f86e04fd6f", "scanner": "scanner-primary", "fingerprint": "57032b0f712a8dae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9da33188896eeeef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/http.test.ts:249"}, "properties": {"repobilityId": "ea08c51cc7da7e57", "scanner": "scanner-primary", "fingerprint": "9da33188896eeeef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-068f4bb7469f9b9f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/threads-http.test.ts:33"}, "properties": {"repobilityId": "e720febf183c78ed", "scanner": "scanner-primary", "fingerprint": "068f4bb7469f9b9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37599fe7cefa1799", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/chat/test/bundle-routing.test.ts:35"}, "properties": {"repobilityId": "b576554c5c645ae1", "scanner": "scanner-primary", "fingerprint": "37599fe7cefa1799", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06257a1054ce6f44", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/chat/test/sse-resume.test.ts:16"}, "properties": {"repobilityId": "41b429d2b940e057", "scanner": "scanner-primary", "fingerprint": "06257a1054ce6f44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7373f573b051263", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/chat/test/sse-resume.test.ts:84"}, "properties": {"repobilityId": "09a430ec25c6dc87", "scanner": "scanner-primary", "fingerprint": "e7373f573b051263", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ee26eabb1ddd96d", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/chat/src/local-runtime.ts:56"}, "properties": {"repobilityId": "2e81154ddfc1285f", "scanner": "scanner-primary", "fingerprint": "3ee26eabb1ddd96d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04a274af446e7857", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/chat/src/local-runtime-structured.ts:15"}, "properties": {"repobilityId": "e59fae1fa9dedb6a", "scanner": "scanner-primary", "fingerprint": "04a274af446e7857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1218a766779a7e46", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/chat/src/coordinator.ts:46"}, "properties": {"repobilityId": "e5ea4135c9676d64", "scanner": "scanner-primary", "fingerprint": "1218a766779a7e46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07c5bb796d22a207", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/chat/src/subject-extraction.ts:1"}, "properties": {"repobilityId": "95bf1435e70153f1", "scanner": "scanner-primary", "fingerprint": "07c5bb796d22a207", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cfea057c2afa5d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/observability/src/types.ts:74"}, "properties": {"repobilityId": "5fd71fddfdaa881d", "scanner": "scanner-primary", "fingerprint": "7cfea057c2afa5d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8feb75b76cfa717a", "level": "note", "message": {"text": "Legacy-named symbol `halfLifeOld` in services/home/test/ranker.test.ts:130"}, "properties": {"repobilityId": "5f23c91cab18c0ea", "scanner": "scanner-primary", "fingerprint": "8feb75b76cfa717a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e3a26203bd6d4c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/home/src/secondary-types.ts:118"}, "properties": {"repobilityId": "798f1262b57e8ecb", "scanner": "scanner-primary", "fingerprint": "6e3a26203bd6d4c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afee95f0512796b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/test/source-category-mapping.test.ts:165"}, "properties": {"repobilityId": "04fd5559a94cd45e", "scanner": "scanner-primary", "fingerprint": "afee95f0512796b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e92a9230e0ed96b", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyze/test/template-runner.test.ts:314"}, "properties": {"repobilityId": "fb3b99cb0674e804", "scanner": "scanner-primary", "fingerprint": "8e92a9230e0ed96b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03fecb9f9da6c94c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/test/template-repo.integration.test.ts:122"}, "properties": {"repobilityId": "c184f4e582acf149", "scanner": "scanner-primary", "fingerprint": "03fecb9f9da6c94c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b62b42a143683fd5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyze/test/template-runner.integration.test.ts:33"}, "properties": {"repobilityId": "b38287d0458ec4d1", "scanner": "scanner-primary", "fingerprint": "b62b42a143683fd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14ff57c2c9f37be7", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/test/template-repo.test.ts:341"}, "properties": {"repobilityId": "95359adb73916a95", "scanner": "scanner-primary", "fingerprint": "14ff57c2c9f37be7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fcdda3998afa371", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/price-target-range-emitter.ts:1"}, "properties": {"repobilityId": "7c1a7caedcbecdf1", "scanner": "scanner-primary", "fingerprint": "8fcdda3998afa371", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed4c1abf0572b18c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/revenue-bars-block-builder.ts:1"}, "properties": {"repobilityId": "ea7a7bbf2265ff0f", "scanner": "scanner-primary", "fingerprint": "ed4c1abf0572b18c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-229a39d2dafb4485", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-emitter.ts:1"}, "properties": {"repobilityId": "b6ef26fd9523e563", "scanner": "scanner-primary", "fingerprint": "229a39d2dafb4485", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c26d11a752c631b3", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/analyze/src/metric-direction.ts:5"}, "properties": {"repobilityId": "205110a3e4c63ade", "scanner": "scanner-primary", "fingerprint": "c26d11a752c631b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9671679e1a1d54a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/metrics-comparison-emitter.ts:1"}, "properties": {"repobilityId": "836d1c97a20a08b3", "scanner": "scanner-primary", "fingerprint": "c9671679e1a1d54a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fe3daea7f2dae31", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/template-repo.ts:310"}, "properties": {"repobilityId": "11e8c3c6a1e2e12f", "scanner": "scanner-primary", "fingerprint": "8fe3daea7f2dae31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dc45fc30d412748", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/analyze/src/template-runner.ts:9"}, "properties": {"repobilityId": "355e70c4252c9b2c", "scanner": "scanner-primary", "fingerprint": "5dc45fc30d412748", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9853448b116c1c17", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyze/src/price-fact-materializer.ts:1"}, "properties": {"repobilityId": "320181730b54010b", "scanner": "scanner-primary", "fingerprint": "9853448b116c1c17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d46c607c9309fe85", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/analyze/src/metrics-comparison-materializer.ts:4"}, "properties": {"repobilityId": "8cfcda12e19886f5", "scanner": "scanner-primary", "fingerprint": "d46c607c9309fe85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-749e9109b1c0f8a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/analyze/src/analyst-consensus-materializer.ts:1"}, "properties": {"repobilityId": "624f274ad53ef6f0", "scanner": "scanner-primary", "fingerprint": "749e9109b1c0f8a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-876d2d7e3af6bce1", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/analyze/src/vendor-fact.ts:1"}, "properties": {"repobilityId": "accd14aee45548a9", "scanner": "scanner-primary", "fingerprint": "876d2d7e3af6bce1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f14d09d154ac80d4", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/analyze/src/source-category-mapping.ts:3"}, "properties": {"repobilityId": "5e59d55a7f833a38", "scanner": "scanner-primary", "fingerprint": "f14d09d154ac80d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2a38e46d6cfeb40", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyze/src/metrics-comparison-block-builder.ts:1"}, "properties": {"repobilityId": "62935d9ca2bad856", "scanner": "scanner-primary", "fingerprint": "f2a38e46d6cfeb40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b81f3dad557ee45a", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/analyze/src/revenue-bars-emitter.ts:1"}, "properties": {"repobilityId": "cbcebe8d8765878e", "scanner": "scanner-primary", "fingerprint": "b81f3dad557ee45a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92b6344992e9209b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/enrichment-writer.ts:15"}, "properties": {"repobilityId": "26118f7f16c1ab5d", "scanner": "scanner-primary", "fingerprint": "92b6344992e9209b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-843b31cf391665fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/universe-seed.ts:74"}, "properties": {"repobilityId": "63c94a7e29581a6b", "scanner": "scanner-primary", "fingerprint": "843b31cf391665fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6870525aed2d6125", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/screener-artifacts/src/etl.ts:43"}, "properties": {"repobilityId": "e36c77f3240dabb2", "scanner": "scanner-primary", "fingerprint": "6870525aed2d6125", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67d50f50f58c6e50", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/screener-artifacts/src/types.ts:13"}, "properties": {"repobilityId": "48de79b6eb1513e9", "scanner": "scanner-primary", "fingerprint": "67d50f50f58c6e50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c4187eb6e51633b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/screener-artifacts/src/bundle.ts:29"}, "properties": {"repobilityId": "eb390456908a8374", "scanner": "scanner-primary", "fingerprint": "4c4187eb6e51633b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a703fdfe9e004294", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/screener-artifacts/src/fact-mapper.ts:3"}, "properties": {"repobilityId": "8d057f95a4b61432", "scanner": "scanner-primary", "fingerprint": "a703fdfe9e004294", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a65c0140eca4b076", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/test/document-repo.test.ts:317"}, "properties": {"repobilityId": "d24c1e3be4a632cc", "scanner": "scanner-primary", "fingerprint": "a65c0140eca4b076", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2176bad626431b41", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/evidence/test/news-ingest.integration.test.ts:102"}, "properties": {"repobilityId": "3f60dce26e8d1dba", "scanner": "scanner-primary", "fingerprint": "2176bad626431b41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b85e6c27059ea53e", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/test/extract-tools.test.ts:160"}, "properties": {"repobilityId": "0d4e3308913f19d6", "scanner": "scanner-primary", "fingerprint": "b85e6c27059ea53e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-532cb2997dd08a18", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/evidence/test/news-ingest.test.ts:483"}, "properties": {"repobilityId": "ac802a2fedfc9f72", "scanner": "scanner-primary", "fingerprint": "532cb2997dd08a18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be8d14a9f2f87bc3", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/test/user-uploads.test.ts:73"}, "properties": {"repobilityId": "c65188f4c7c39642", "scanner": "scanner-primary", "fingerprint": "be8d14a9f2f87bc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce1f8f504098a95b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/test/document-threading.test.ts:131"}, "properties": {"repobilityId": "b03872d9c4e0c88d", "scanner": "scanner-primary", "fingerprint": "ce1f8f504098a95b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aafe8bfb148b89e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/evidence/test/review-http.test.ts:117"}, "properties": {"repobilityId": "c26c638d8a43eec3", "scanner": "scanner-primary", "fingerprint": "aafe8bfb148b89e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1634c49453a6f1a9", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/test/sec-edgar.integration.test.ts:16"}, "properties": {"repobilityId": "e73f3a353701e774", "scanner": "scanner-primary", "fingerprint": "1634c49453a6f1a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fdc8ef26f147a3f", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/src/local-runtime-evidence.ts:227"}, "properties": {"repobilityId": "739d66de6525495b", "scanner": "scanner-primary", "fingerprint": "2fdc8ef26f147a3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a916f30525e97776", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/src/license-policy.ts:13"}, "properties": {"repobilityId": "feb0567cca9731b4", "scanner": "scanner-primary", "fingerprint": "a916f30525e97776", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-185e40f3762ebe3d", "level": "note", "message": {"text": "Legacy-named symbol `issuer_ir_rules_v1` in services/evidence/src/issuer-ir-extraction.ts:58"}, "properties": {"repobilityId": "b1126dec1e71b49e", "scanner": "scanner-primary", "fingerprint": "185e40f3762ebe3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea4a5b7ad2d8c6fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/src/s3-object-store.ts:159"}, "properties": {"repobilityId": "52944314dd51eb17", "scanner": "scanner-primary", "fingerprint": "ea4a5b7ad2d8c6fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-560cb9ebb79509f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/src/blob-gc-repo.ts:290"}, "properties": {"repobilityId": "4704d63941c86dde", "scanner": "scanner-primary", "fingerprint": "560cb9ebb79509f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e4eb4af606243fd", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/evidence/src/sec-edgar.ts:3"}, "properties": {"repobilityId": "0687625d48bf7db3", "scanner": "scanner-primary", "fingerprint": "9e4eb4af606243fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2a0a2685f4b771d", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/src/user-uploads.ts:3"}, "properties": {"repobilityId": "85ec86c18a5ddef7", "scanner": "scanner-primary", "fingerprint": "c2a0a2685f4b771d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8ddb16eaf590481", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/evidence/src/sec-filings-backfill.ts:1"}, "properties": {"repobilityId": "a138392c8f41d08b", "scanner": "scanner-primary", "fingerprint": "d8ddb16eaf590481", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e15234779636f39", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/evidence/src/news-ingest.ts:3"}, "properties": {"repobilityId": "3f8ef139b0f80ede", "scanner": "scanner-primary", "fingerprint": "9e15234779636f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66b96fbe57ab9a15", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/evidence/src/inspector.ts:447"}, "properties": {"repobilityId": "37735fb382c61ed7", "scanner": "scanner-primary", "fingerprint": "66b96fbe57ab9a15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef841bee2dd31a5e", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/evidence/src/reader/extract-tools.ts:3"}, "properties": {"repobilityId": "021610f118e1c72c", "scanner": "scanner-primary", "fingerprint": "ef841bee2dd31a5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-862ec5511e4fd869", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/test/http.test.ts:196"}, "properties": {"repobilityId": "85aead43e69527ba", "scanner": "scanner-primary", "fingerprint": "862ec5511e4fd869", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cdec2bce91f817f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/resolver/test/normalize.test.ts:122"}, "properties": {"repobilityId": "79f7a6b3cba43305", "scanner": "scanner-primary", "fingerprint": "cdec2bce91f817f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b873a6215d2d26a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/resolver/src/discovery.ts:433"}, "properties": {"repobilityId": "719ca6e1badd2b0a", "scanner": "scanner-primary", "fingerprint": "8b873a6215d2d26a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4319b78adad6f1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http.test.ts:19"}, "properties": {"repobilityId": "f0e0dee51d811bbe", "scanner": "scanner-primary", "fingerprint": "e4319b78adad6f1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23719711993d7a88", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-overlays.test.ts:52"}, "properties": {"repobilityId": "8912d193c7ad6982", "scanner": "scanner-primary", "fingerprint": "23719711993d7a88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91ec9e2b63f5848e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/http-holdings.test.ts:20"}, "properties": {"repobilityId": "32154006f735b11f", "scanner": "scanner-primary", "fingerprint": "91ec9e2b63f5848e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2fd58f0b67826b86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/helpers.ts:42"}, "properties": {"repobilityId": "66556ce0ea4e3502", "scanner": "scanner-primary", "fingerprint": "2fd58f0b67826b86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f209686c11ccc2b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/portfolio/test/auth-http.test.ts:41"}, "properties": {"repobilityId": "28359c0e01ba54ad", "scanner": "scanner-primary", "fingerprint": "5f209686c11ccc2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b98b6b24b9eebe3c", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/portfolio/src/overlays.ts:1"}, "properties": {"repobilityId": "c95a9d416912b373", "scanner": "scanner-primary", "fingerprint": "b98b6b24b9eebe3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21b328066b017cca", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/portfolio/src/queries.ts:236"}, "properties": {"repobilityId": "dc48f2cc3f9d6e7a", "scanner": "scanner-primary", "fingerprint": "21b328066b017cca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37e58b6920dfcfa1", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/portfolio/src/holdings.ts:1"}, "properties": {"repobilityId": "fe420a4fd0435cc8", "scanner": "scanner-primary", "fingerprint": "37e58b6920dfcfa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe7052c14c32ff30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/market/test/http.test.ts:48"}, "properties": {"repobilityId": "bbb90676a5e79b16", "scanner": "scanner-primary", "fingerprint": "fe7052c14c32ff30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd87f7927d43b6f8", "level": "note", "message": {"text": "Legacy-named symbol `market_agent_unused` in services/market/test/stack.test.ts:12"}, "properties": {"repobilityId": "b1dc2d4b8c8199d9", "scanner": "scanner-primary", "fingerprint": "dd87f7927d43b6f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9a50d49160b0b64e", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/market/test/corporate-actions.test.ts:390"}, "properties": {"repobilityId": "a0a242bd005972ea", "scanner": "scanner-primary", "fingerprint": "9a50d49160b0b64e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5684f09dd34179d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/market/src/dev-fixtures.ts:1"}, "properties": {"repobilityId": "762176a50c985be3", "scanner": "scanner-primary", "fingerprint": "5684f09dd34179d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-362b7860069d4114", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/market/src/series-query.ts:1"}, "properties": {"repobilityId": "55f8c154a6c8c604", "scanner": "scanner-primary", "fingerprint": "362b7860069d4114", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cad1e34adbc1e4b", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/market/src/corporate-actions.ts:1"}, "properties": {"repobilityId": "c2daffb0fb460104", "scanner": "scanner-primary", "fingerprint": "5cad1e34adbc1e4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f56ce211eb9d71a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/market/src/http.ts:52"}, "properties": {"repobilityId": "e7fe316457feeb0b", "scanner": "scanner-primary", "fingerprint": "f56ce211eb9d71a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57f56f543cb8a92f", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/market/src/listings.ts:67"}, "properties": {"repobilityId": "2816ee64494952c7", "scanner": "scanner-primary", "fingerprint": "57f56f543cb8a92f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d70aaffce7c45ee5", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/market/src/quote-refresh.ts:30"}, "properties": {"repobilityId": "31fd54b0e9b3c43a", "scanner": "scanner-primary", "fingerprint": "d70aaffce7c45ee5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6e3ac81c625b590", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/tools/test/reader-tool-dispatcher.test.ts:594"}, "properties": {"repobilityId": "9d4ba4f6f2d6f9bd", "scanner": "scanner-primary", "fingerprint": "c6e3ac81c625b590", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f9b1d98cc3865d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/tools/test/fast-path.test.ts:140"}, "properties": {"repobilityId": "bd7a9c336ad73de4", "scanner": "scanner-primary", "fingerprint": "1f9b1d98cc3865d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e832425c245ee38", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/tools/src/reader-tool-dispatcher.ts:3"}, "properties": {"repobilityId": "ec33b515d1904b2d", "scanner": "scanner-primary", "fingerprint": "7e832425c245ee38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab8125f1949facf9", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/tools/src/fast-path.ts:27"}, "properties": {"repobilityId": "8b813a5a14974077", "scanner": "scanner-primary", "fingerprint": "ab8125f1949facf9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73e5aa946944ad40", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/http.test.ts:74"}, "properties": {"repobilityId": "02f710c4e411c1fe", "scanner": "scanner-primary", "fingerprint": "73e5aa946944ad40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a78b085ff1ad7c82", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/stats.http.test.ts:81"}, "properties": {"repobilityId": "70c5658853d250f9", "scanner": "scanner-primary", "fingerprint": "a78b085ff1ad7c82", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5f0d4d4071496a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/consensus.http.test.ts:75"}, "properties": {"repobilityId": "7b848bfea6d319d0", "scanner": "scanner-primary", "fingerprint": "b5f0d4d4071496a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-613df874a27a408d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/segments.http.test.ts:75"}, "properties": {"repobilityId": "bb7d991a6ebaab84", "scanner": "scanner-primary", "fingerprint": "613df874a27a408d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-175ac046cb70c46d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/earnings.http.test.ts:78"}, "properties": {"repobilityId": "99b36b1947b23322", "scanner": "scanner-primary", "fingerprint": "175ac046cb70c46d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-489358d6a49b9857", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/holders.http.test.ts:69"}, "properties": {"repobilityId": "618681ad86f0438f", "scanner": "scanner-primary", "fingerprint": "489358d6a49b9857", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57e3bf0a64f6726d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/fundamentals/test/statements.http.test.ts:79"}, "properties": {"repobilityId": "910875c4747ea7bb", "scanner": "scanner-primary", "fingerprint": "57e3bf0a64f6726d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22fc637c615d3b6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/fundamentals/src/dev-statement-fixtures.ts:229"}, "properties": {"repobilityId": "7de691eb35d35e3d", "scanner": "scanner-primary", "fingerprint": "22fc637c615d3b6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35eb5033e3814c7a", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/fundamentals/src/segment-facts.ts:3"}, "properties": {"repobilityId": "0f9efb649db053e7", "scanner": "scanner-primary", "fingerprint": "35eb5033e3814c7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-855cbfc87a3b4636", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/fundamentals/src/sec-edgar.ts:3"}, "properties": {"repobilityId": "fc32558fa6faa04c", "scanner": "scanner-primary", "fingerprint": "855cbfc87a3b4636", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7ac9c08f9e14ba4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/fundamentals/src/fiscal-calendar.ts:17"}, "properties": {"repobilityId": "b9aaad196411b289", "scanner": "scanner-primary", "fingerprint": "e7ac9c08f9e14ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca89d801d6841c2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/fundamentals/src/metric-mapper.ts:3"}, "properties": {"repobilityId": "8bf4860d2a9376b9", "scanner": "scanner-primary", "fingerprint": "ca89d801d6841c2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9be1ca69081522c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/fundamentals/src/issuer-fundamentals-reader.ts:86"}, "properties": {"repobilityId": "ed156fc08f58d1b7", "scanner": "scanner-primary", "fingerprint": "f9be1ca69081522c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac4d5f3edb69acc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/fundamentals/src/peer-metrics.ts:1"}, "properties": {"repobilityId": "7100567360dc47db", "scanner": "scanner-primary", "fingerprint": "ac4d5f3edb69acc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf4fd667f8285b84", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/fundamentals/src/analyst-consensus.ts:9"}, "properties": {"repobilityId": "371c9f1d585645fc", "scanner": "scanner-primary", "fingerprint": "bf4fd667f8285b84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e7c563cedc3e9a6", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/artifact/src/share-to-chat.ts:92"}, "properties": {"repobilityId": "ab6b9099d8a3c65a", "scanner": "scanner-primary", "fingerprint": "0e7c563cedc3e9a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4a45a8152ce7a74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/http.test.ts:29"}, "properties": {"repobilityId": "0c131a7010c1a813", "scanner": "scanner-primary", "fingerprint": "b4a45a8152ce7a74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1231bc4d84453d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/dev-api/test/local-runtime.integration.test.ts:203"}, "properties": {"repobilityId": "007f4f7f9d3775a1", "scanner": "scanner-primary", "fingerprint": "e1231bc4d84453d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63019ae6ec1c62b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/dev-api/test/revenue-bars-run.integration.test.ts:14"}, "properties": {"repobilityId": "5573a6e149b089a1", "scanner": "scanner-primary", "fingerprint": "63019ae6ec1c62b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d2db6b0901ad169", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/dev-api/test/peer-comparison-run.integration.test.ts:20"}, "properties": {"repobilityId": "ad95653fd9bb356f", "scanner": "scanner-primary", "fingerprint": "6d2db6b0901ad169", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-199c19cdfba104d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/dev-api/src/dev-api-shared.ts:1"}, "properties": {"repobilityId": "6cf63215aaf43e55", "scanner": "scanner-primary", "fingerprint": "199c19cdfba104d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71b71967fe61bf9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/dev-api/src/analyze-adapter.ts:1"}, "properties": {"repobilityId": "be8af912ad251f0c", "scanner": "scanner-primary", "fingerprint": "71b71967fe61bf9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fedd3b8f0643c3cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/dev-api/src/analyze-fixture.ts:1"}, "properties": {"repobilityId": "e833d2a1a38ef765", "scanner": "scanner-primary", "fingerprint": "fedd3b8f0643c3cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82d5fe4e4bf90f57", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http.test.ts:66"}, "properties": {"repobilityId": "6dc924b8385286ab", "scanner": "scanner-primary", "fingerprint": "82d5fe4e4bf90f57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-025f92084032d072", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/auth-http.test.ts:41"}, "properties": {"repobilityId": "05ce4c964e6e157f", "scanner": "scanner-primary", "fingerprint": "025f92084032d072", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3663419c1dc0f421", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/watchlists/test/http-crud.test.ts:138"}, "properties": {"repobilityId": "b5d024532d79d1e9", "scanner": "scanner-primary", "fingerprint": "3663419c1dc0f421", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a4e355fce910d85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/screener/test/http.test.ts:59"}, "properties": {"repobilityId": "27eccb316dec4475", "scanner": "scanner-primary", "fingerprint": "3a4e355fce910d85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ceb5c697d401e7d8", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/screener/test/screen-subject.test.ts:174"}, "properties": {"repobilityId": "6bd1167a4ea27c32", "scanner": "scanner-primary", "fingerprint": "ceb5c697d401e7d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2150a7abf658d1f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/screener/test/delay-class-drift.test.ts:6"}, "properties": {"repobilityId": "9f16108b1b3863d3", "scanner": "scanner-primary", "fingerprint": "2150a7abf658d1f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b93c4f13db4c0623", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/screener/src/candidate-row.ts:3"}, "properties": {"repobilityId": "06c27459c36bf791", "scanner": "scanner-primary", "fingerprint": "b93c4f13db4c0623", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b554b0548039f5a9", "level": "none", "message": {"text": "Commented-code block (11 lines) in services/screener/src/db-candidates-vendor.ts:3"}, "properties": {"repobilityId": "e53293cab74dd17b", "scanner": "scanner-primary", "fingerprint": "b554b0548039f5a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b38960bd1ec1659", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/screener/src/subject-ref.ts:6"}, "properties": {"repobilityId": "213450f05e99c43d", "scanner": "scanner-primary", "fingerprint": "4b38960bd1ec1659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20e2ff6ef4cf4345", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/screener/src/query.ts:3"}, "properties": {"repobilityId": "d9e371d6121a740e", "scanner": "scanner-primary", "fingerprint": "20e2ff6ef4cf4345", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ed1ce70281306c4", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/screener/src/candidate.ts:3"}, "properties": {"repobilityId": "352fe0756f9481f4", "scanner": "scanner-primary", "fingerprint": "1ed1ce70281306c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd3ed4835161d638", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/screener/src/screen-subject.ts:3"}, "properties": {"repobilityId": "214d5f31e9a406c6", "scanner": "scanner-primary", "fingerprint": "fd3ed4835161d638", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e3508036f989c78", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/screener/src/result.ts:3"}, "properties": {"repobilityId": "818e2327a58e3e58", "scanner": "scanner-primary", "fingerprint": "1e3508036f989c78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c424f8324d904ddf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 services/snapshot/test/http.test.ts:194"}, "properties": {"repobilityId": "63f786a466342c56", "scanner": "scanner-primary", "fingerprint": "c424f8324d904ddf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ec2a46b2289e672", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/snapshot/src/seal-input.ts:1"}, "properties": {"repobilityId": "ef4c0211c633a419", "scanner": "scanner-primary", "fingerprint": "8ec2a46b2289e672", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2082b05b3a964e61", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/snapshot/src/manifest-staging.ts:413"}, "properties": {"repobilityId": "bd3129a401a9f644", "scanner": "scanner-primary", "fingerprint": "2082b05b3a964e61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0aaa282efccb837", "level": "none", "message": {"text": "Commented-code block (7 lines) in db/test/migrate.test.ts:1020"}, "properties": {"repobilityId": "edc2ecdb51a0b7ed", "scanner": "scanner-primary", "fingerprint": "f0aaa282efccb837", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dc9a8d6f28f0c75", "level": "warning", "message": {"text": "Frontend route `home` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "889f8e1a7c38d4cd", "scanner": "scanner-primary", "fingerprint": "8dc9a8d6f28f0c75", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1c4023057f3af148", "level": "warning", "message": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "b944b2a08625bf82", "scanner": "scanner-primary", "fingerprint": "1c4023057f3af148", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-41d10179595129b5", "level": "warning", "message": {"text": "Frontend route `review` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "fd5d689bf476c063", "scanner": "scanner-primary", "fingerprint": "41d10179595129b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-88cf01eced5e2d03", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "0b7abb0a2f12db9d", "scanner": "scanner-primary", "fingerprint": "88cf01eced5e2d03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-db717d49a884d193", "level": "warning", "message": {"text": "Frontend route `chat` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "1f0d7fcf0a18b811", "scanner": "scanner-primary", "fingerprint": "db717d49a884d193", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0908837a739d88c8", "level": "warning", "message": {"text": "Frontend route `:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "properties": {"repobilityId": "7a3887b91ef11a9a", "scanner": "scanner-primary", "fingerprint": "0908837a739d88c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7bc6fee609e6afc2", "level": "warning", "message": {"text": "Frontend route `screener` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "638c14e0ef551638", "scanner": "scanner-primary", "fingerprint": "7bc6fee609e6afc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-25b036735c7a307a", "level": "warning", "message": {"text": "Frontend route `analyze` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "3c22194f3d1c0479", "scanner": "scanner-primary", "fingerprint": "25b036735c7a307a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c05f6463e5300dec", "level": "warning", "message": {"text": "Frontend route `analyst-grids` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "41f58f9f5589bc57", "scanner": "scanner-primary", "fingerprint": "c05f6463e5300dec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c17271e42bbe8183", "level": "warning", "message": {"text": "Frontend route `symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/App.tsx"}, "properties": {"repobilityId": "d929744b2d8df814", "scanner": "scanner-primary", "fingerprint": "c17271e42bbe8183", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ab44403aaca13c57", "level": "warning", "message": {"text": "Frontend route `/chat/:threadId` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "properties": {"repobilityId": "60c29bb4cca01414", "scanner": "scanner-primary", "fingerprint": "ab44403aaca13c57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d5cceed8e8acb492", "level": "warning", "message": {"text": "Frontend route `/analyze` has no Link/navigate to it \u2014 web/src/pages/workflowSurfaces.test.tsx"}, "properties": {"repobilityId": "c75d1942e9b9c778", "scanner": "scanner-primary", "fingerprint": "d5cceed8e8acb492", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-68ca08d9442a6216", "level": "warning", "message": {"text": "Frontend route `/symbol/issuer/financials` has no Link/navigate to it \u2014 web/src/pages/symbol/FinancialsSection.test.tsx"}, "properties": {"repobilityId": "627d2a8f0b0a7a4e", "scanner": "scanner-primary", "fingerprint": "68ca08d9442a6216", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2765ebc09a4e0e7e", "level": "warning", "message": {"text": "Frontend route `/symbol/listing/overview` has no Link/navigate to it \u2014 web/src/pages/symbol/OverviewSection.test.tsx"}, "properties": {"repobilityId": "e132461a7d42ce48", "scanner": "scanner-primary", "fingerprint": "2765ebc09a4e0e7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f069b3fe1c556a2f", "level": "warning", "message": {"text": "Frontend route `/symbol/:subjectRef` has no Link/navigate to it \u2014 web/src/shell/SubjectDetailShell.test.tsx"}, "properties": {"repobilityId": "f81d88b6da012ce8", "scanner": "scanner-primary", "fingerprint": "f069b3fe1c556a2f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a4e968fb2baf0100", "level": "error", "message": {"text": "FastAPI POST `market_quote` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:65"}, "properties": {"repobilityId": "5df64607b9458f3d", "scanner": "scanner-primary", "fingerprint": "a4e968fb2baf0100", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-f49fa0d3ea3288b6", "level": "error", "message": {"text": "FastAPI POST `market_daily_bars` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:94"}, "properties": {"repobilityId": "0d713a774a79a41a", "scanner": "scanner-primary", "fingerprint": "f49fa0d3ea3288b6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-d73f428dc1b8f623", "level": "error", "message": {"text": "FastAPI POST `reference_profile` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:144"}, "properties": {"repobilityId": "ee18ce21af0288a1", "scanner": "scanner-primary", "fingerprint": "d73f428dc1b8f623", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-4fde238a2a05a7d3", "level": "error", "message": {"text": "FastAPI POST `fundamentals_earnings` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:172"}, "properties": {"repobilityId": "7064ba32364a7712", "scanner": "scanner-primary", "fingerprint": "4fde238a2a05a7d3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-fe5f3fb81df1a277", "level": "error", "message": {"text": "FastAPI POST `fundamentals_consensus` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:204"}, "properties": {"repobilityId": "5a0be8621908d8b4", "scanner": "scanner-primary", "fingerprint": "fe5f3fb81df1a277", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-e0923ffa07d81a2e", "level": "error", "message": {"text": "FastAPI POST `fundamentals_holders` without auth dependency \u2014 services/dev-providers/dev_providers/main.py:236"}, "properties": {"repobilityId": "5ca2dd94b428bc47", "scanner": "scanner-primary", "fingerprint": "e0923ffa07d81a2e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/dev-providers/dev_providers/main.py"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-5512536966522163", "level": "error", "message": {"text": "Dangling fetch: GET /v1/themes/membership-rationales?${params.toString()} (web/src/symbol/themeRationale.ts:22)"}, "properties": {"repobilityId": "8b2d79a22cb76235", "scanner": "scanner-primary", "fingerprint": "5512536966522163", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ee0635cffa6c524", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:53)"}, "properties": {"repobilityId": "9bbc213cbe7c023c", "scanner": "scanner-primary", "fingerprint": "6ee0635cffa6c524", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43f813292143e42f", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:63)"}, "properties": {"repobilityId": "5959a0ae7c9a328a", "scanner": "scanner-primary", "fingerprint": "43f813292143e42f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4fdf287b61b609e5", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:75)"}, "properties": {"repobilityId": "69da0abdd2123cb1", "scanner": "scanner-primary", "fingerprint": "4fdf287b61b609e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1e358d526fae96d5", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/something-else (services/home/test/http.test.ts:94)"}, "properties": {"repobilityId": "f90d40f00a7d5068", "scanner": "scanner-primary", "fingerprint": "1e358d526fae96d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f687054368ae66b1", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/healthz (services/home/test/http.test.ts:104)"}, "properties": {"repobilityId": "03db1b4726e803fe", "scanner": "scanner-primary", "fingerprint": "f687054368ae66b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f05e6132c16e451d", "level": "error", "message": {"text": "Dangling fetch: GET http://127.0.0.1:${port}/v1/home/summary (services/home/test/http.test.ts:126)"}, "properties": {"repobilityId": "0fdc4d0835c6b464", "scanner": "scanner-primary", "fingerprint": "f05e6132c16e451d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09309eafebeedef7", "level": "error", "message": {"text": "Dangling fetch: GET /v3/reference/tickers?${params.toString()} (services/resolver/src/discovery.ts:141)"}, "properties": {"repobilityId": "e9b3dd9ec78e2f20", "scanner": "scanner-primary", "fingerprint": "09309eafebeedef7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-6e3492c8394bf7be", "level": "error", "message": {"text": "Dangling fetch: GET /v2/snapshot/locale/us/markets/stocks/tickers/AMD (services/market/test/adapters/polygon.test.ts:35)"}, "properties": {"repobilityId": "9fae1040c3f7a984", "scanner": "scanner-primary", "fingerprint": "6e3492c8394bf7be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-5401ea3172bc8b92", "level": "note", "message": {"text": "Unused endpoint: GET /reference/ticker/{ticker}"}, "properties": {"repobilityId": "c84050e6564e02bd", "scanner": "scanner-primary", "fingerprint": "5401ea3172bc8b92", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f24199d2e5682d0", "level": "note", "message": {"text": "Unused endpoint: POST /market/quote"}, "properties": {"repobilityId": "ad79521b11d91833", "scanner": "scanner-primary", "fingerprint": "3f24199d2e5682d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd7b9e28d36f93c6", "level": "note", "message": {"text": "Unused endpoint: POST /market/daily-bars"}, "properties": {"repobilityId": "4c85092715f848d2", "scanner": "scanner-primary", "fingerprint": "fd7b9e28d36f93c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-baf794a62c2b82de", "level": "note", "message": {"text": "Unused endpoint: POST /reference/profile"}, "properties": {"repobilityId": "0af2e566a670bb1d", "scanner": "scanner-primary", "fingerprint": "baf794a62c2b82de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9305177dde089efd", "level": "note", "message": {"text": "Unused endpoint: POST /fundamentals/earnings"}, "properties": {"repobilityId": "bf9f9031de42853d", "scanner": "scanner-primary", "fingerprint": "9305177dde089efd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-72b17d52a1df31af", "level": "note", "message": {"text": "Unused endpoint: POST /fundamentals/consensus"}, "properties": {"repobilityId": "4af6b6ff85f8bb96", "scanner": "scanner-primary", "fingerprint": "72b17d52a1df31af", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b4b084ce633e3e7", "level": "note", "message": {"text": "Unused endpoint: POST /fundamentals/holders"}, "properties": {"repobilityId": "6515de9da86182e9", "scanner": "scanner-primary", "fingerprint": "5b4b084ce633e3e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}