{"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-8ab3604cc872cb7f", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/engine/chapters.ts:112", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/engine/chapters.ts:112"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e55000367c5c7974", "name": "Stray `console.log` in TS/JS \u2014 src/engine/audio-resampler-bench.test.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/engine/audio-resampler-bench.test.ts:105"}, "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-860824352e5dc802", "name": "TODO/FIXME marker in shipping code \u2014 src/engine/worker.ts:7811", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/engine/worker.ts:7811"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-638bfb9410fed9ba", "name": "Insecure pattern 'node_child_process' in vite.config.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in vite.config.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-06143e17c678815d", "name": "Insecure pattern 'node_child_process' in scripts/build-rnnoise-wasm.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/build-rnnoise-wasm.mjs:23"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7e378c124e3a9b9", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/LimitedPreview.browser.test.tsx:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/LimitedPreview.browser.test.tsx:26"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a3fd80940739b9c3", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/DocsNav.browser.test.tsx:21", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/DocsNav.browser.test.tsx:21"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2cbfb2d0dcb81258", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/AutoCaptionsPanel.browser.test.tsx:69", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/AutoCaptionsPanel.browser.test.tsx:69"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60feb72fa3a960d8", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/Inspector.browser.test.tsx:87", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/Inspector.browser.test.tsx:87"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a973ec877f6704d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de53ac274e5b4ecf", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37716d9c0a33ad5c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a082f4c1924d23ae", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2def854cfce04944", "name": "Very large file: src/protocol.ts (2677 lines)", "shortDescription": {"text": "Very large file: src/protocol.ts (2677 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-d791b03df98dab05", "name": "Very large file: src/ui/Inspector.tsx (1931 lines)", "shortDescription": {"text": "Very large file: src/ui/Inspector.tsx (1931 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-5d3c18e1db156d8c", "name": "Very large file: src/ui/App.tsx (4084 lines)", "shortDescription": {"text": "Very large file: src/ui/App.tsx (4084 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-6610701fba95e516", "name": "Very large file: src/engine/project.ts (1631 lines)", "shortDescription": {"text": "Very large file: src/engine/project.ts (1631 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-f91fe6ab98bcdf85", "name": "Very large file: src/engine/gpu.ts (1456 lines)", "shortDescription": {"text": "Very large file: src/engine/gpu.ts (1456 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-88c5a45142f5ebab", "name": "Very large file: src/engine/timeline.ts (2527 lines)", "shortDescription": {"text": "Very large file: src/engine/timeline.ts (2527 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-1d07ef5947576248", "name": "Very large file: src/engine/timeline.test.ts (2186 lines)", "shortDescription": {"text": "Very large file: src/engine/timeline.test.ts (2186 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-5b2282e6954b2a42", "name": "Very large file: src/engine/worker.ts (7892 lines)", "shortDescription": {"text": "Very large file: src/engine/worker.ts (7892 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 10 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 25 placeholder/mock markers across 17 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-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-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3b365492823c10c", "name": "Commented-code block (10 lines) in vite.config.ts:275", "shortDescription": {"text": "Commented-code block (10 lines) in vite.config.ts:275"}, "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-fcaa709cf5d4aa82", "name": "Commented-code block (5 lines) in src/ui/asr-bridge.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in src/ui/asr-bridge.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-235b8fdcbb8c5bde", "name": "Commented-code block (5 lines) in src/ui/audio-engine.ts:175", "shortDescription": {"text": "Commented-code block (5 lines) in src/ui/audio-engine.ts:175"}, "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-7308329d549c46f6", "name": "Commented-code block (5 lines) in src/ui/SilenceReviewPanel.tsx:164", "shortDescription": {"text": "Commented-code block (5 lines) in src/ui/SilenceReviewPanel.tsx:164"}, "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-4df0f99daa8e0baa", "name": "Commented-code block (5 lines) in src/ui/clock.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in src/ui/clock.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-8bd476823879f6f4", "name": "Commented-code block (5 lines) in src/ui/App.tsx:1496", "shortDescription": {"text": "Commented-code block (5 lines) in src/ui/App.tsx:1496"}, "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-f39d7ced5a0c5488", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/App.tsx:578", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/App.tsx:578"}, "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-45f02023a8ecc36b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/worker/index.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/worker/index.ts:10"}, "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-f58a2758628c2d58", "name": "Commented-code block (5 lines) in src/engine/project.ts:649", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/project.ts:649"}, "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-604e16d7d0b02870", "name": "Commented-code block (6 lines) in src/engine/transform.ts:156", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/transform.ts:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f06f6ed6f310bb94", "name": "Commented-code block (5 lines) in src/engine/capability-probe-v2.ts:498", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/capability-probe-v2.ts:498"}, "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-13d68a5e76d00f63", "name": "Commented-code block (5 lines) in src/engine/gpu.ts:1281", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/gpu.ts:1281"}, "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-bb72cf14567d57a9", "name": "Commented-code block (5 lines) in src/engine/timeline.ts:465", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/timeline.ts:465"}, "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-d5c7baeaad2567ed", "name": "Commented-code block (5 lines) in src/engine/scopes.ts:174", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/scopes.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-63c095f8aa6050b5", "name": "Commented-code block (5 lines) in src/engine/hardware-probe.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/hardware-probe.ts:89"}, "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-15b446a141e111f8", "name": "Commented-code block (8 lines) in src/engine/export.ts:728", "shortDescription": {"text": "Commented-code block (8 lines) in src/engine/export.ts:728"}, "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-9d47618139ff3070", "name": "Commented-code block (6 lines) in src/engine/audio-resampler-wasm.ts:297", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/audio-resampler-wasm.ts:297"}, "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-da33e59aa325a2ef", "name": "Commented-code block (5 lines) in src/engine/audio-resampler-wasm.test.ts:198", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/audio-resampler-wasm.test.ts:198"}, "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-33c5c38ce2c5bee9", "name": "Commented-code block (5 lines) in src/engine/transform.test.ts:120", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/transform.test.ts:120"}, "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-c914734064d82640", "name": "Commented-code block (8 lines) in src/engine/titles.ts:262", "shortDescription": {"text": "Commented-code block (8 lines) in src/engine/titles.ts:262"}, "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-f18bbf3cd22619b7", "name": "Commented-code block (6 lines) in src/engine/playback.ts:246", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/playback.ts:246"}, "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-72b70ab7d23d3a04", "name": "Commented-code block (6 lines) in src/engine/wsola.test.ts:164", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/wsola.test.ts:164"}, "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-ff5a3ef3bdd46127", "name": "Commented-code block (5 lines) in src/engine/export.test.ts:994", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/export.test.ts:994"}, "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-b0e3ac089d92a9b4", "name": "Commented-code block (5 lines) in src/engine/worker.ts:677", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/worker.ts:677"}, "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-9c2d6d0d48d8f64b", "name": "Commented-code block (6 lines) in src/engine/voice-cleanup/ebu-r128.test.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/voice-cleanup/ebu-r128.test.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-7fd47b9f071d26ae", "name": "Commented-code block (6 lines) in src/engine/compatibility/compatibility.test.ts:139", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/compatibility/compatibility.test.ts:139"}, "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-a63dad928e33ff51", "name": "Commented-code block (7 lines) in src/engine/compatibility/canvas-compositor.ts:140", "shortDescription": {"text": "Commented-code block (7 lines) in src/engine/compatibility/canvas-compositor.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-e313e24e9459ae1e", "name": "Commented-code block (5 lines) in src/engine/asr/asset-cache.ts:88", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/asr/asset-cache.ts:88"}, "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-431b95a1780dd199", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asset-cache.ts:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asset-cache.ts:87"}, "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-20d88f6e99fa25d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asr-worker.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asr-worker.ts:109"}, "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-bdf2c7b65f7d51ca", "name": "Commented-code block (5 lines) in src/engine/asr/litert-runtime.ts:228", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/asr/litert-runtime.ts:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa75d8acdcf7bff4", "name": "Commented-code block (6 lines) in src/engine/asr/whisper-decode.ts:575", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/asr/whisper-decode.ts:575"}, "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-0c7b972701d70331", "name": "Commented-code block (7 lines) in src/engine/captions/render.ts:125", "shortDescription": {"text": "Commented-code block (7 lines) in src/engine/captions/render.ts:125"}, "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-99902a6f2a8edc0e", "name": "Commented-code block (5 lines) in src/engine/captions/model.ts:232", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/captions/model.ts:232"}, "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-c33ae41a7422a7e4", "name": "Commented-code block (7 lines) in src/engine/captions/anim-style.ts:225", "shortDescription": {"text": "Commented-code block (7 lines) in src/engine/captions/anim-style.ts:225"}, "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-97313ee7b7e1cdab", "name": "Commented-code block (5 lines) in src/engine/reframe/mediapipe-loader.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/reframe/mediapipe-loader.js: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-89bd9d52d22104e4", "name": "Commented-code block (5 lines) in src/engine/reframe/reframe-analyzer.ts:140", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/reframe/reframe-analyzer.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-fb5b3c4c4bc401b3", "name": "Commented-code block (6 lines) in src/engine/capture/key-overlay-generator.ts:84", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/capture/key-overlay-generator.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ea1452bba7362d0", "name": "Commented-code block (6 lines) in src/engine/matte/matte-engine.ts:331", "shortDescription": {"text": "Commented-code block (6 lines) in src/engine/matte/matte-engine.ts:331"}, "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-97ed8be306116082", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/matte/matte-engine.ts:355", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/matte/matte-engine.ts:355"}, "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-d1aa671a01a95fe6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/interpolation/interpolation-engine.ts:134", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/interpolation/interpolation-engine.ts:134"}, "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-7956fa728cfdd5ab", "name": "Commented-code block (5 lines) in src/engine/media-adapters/mediabunny-adapter.ts:574", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/media-adapters/mediabunny-adapter.ts:574"}, "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-c7f276c64d5b1759", "name": "Legacy-named symbol `groundOld` in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:246", "shortDescription": {"text": "Legacy-named symbol `groundOld` in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:246"}, "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-7ff8d5438c40baf2", "name": "Commented-code block (5 lines) in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:23"}, "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}}]}}, "automationDetails": {"id": "repobility/19460"}, "properties": {"repository": "shenghaoc/browser-editor", "repoUrl": "https://github.com/shenghaoc/browser-editor", "branch": "main"}, "results": [{"ruleId": "scanner-8ab3604cc872cb7f", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/engine/chapters.ts:112"}, "properties": {"repobilityId": "d680fd65b97afe8a", "scanner": "scanner-primary", "fingerprint": "8ab3604cc872cb7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-e55000367c5c7974", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/engine/audio-resampler-bench.test.ts:105"}, "properties": {"repobilityId": "8205be049ef4625f", "scanner": "scanner-primary", "fingerprint": "e55000367c5c7974", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-860824352e5dc802", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/engine/worker.ts:7811"}, "properties": {"repobilityId": "8ab72168c267b344", "scanner": "scanner-primary", "fingerprint": "860824352e5dc802", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-638bfb9410fed9ba", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in vite.config.ts:2"}, "properties": {"repobilityId": "b194fcea7803da43", "scanner": "scanner-primary", "fingerprint": "638bfb9410fed9ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "vite.config.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-06143e17c678815d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/build-rnnoise-wasm.mjs:23"}, "properties": {"repobilityId": "cd773ef89292946c", "scanner": "scanner-primary", "fingerprint": "06143e17c678815d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-rnnoise-wasm.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-d7e378c124e3a9b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/LimitedPreview.browser.test.tsx:26"}, "properties": {"repobilityId": "f8a1331a75a872ef", "scanner": "scanner-primary", "fingerprint": "d7e378c124e3a9b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/__browser__/LimitedPreview.browser.test.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-a3fd80940739b9c3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/DocsNav.browser.test.tsx:21"}, "properties": {"repobilityId": "0ee3573d5ef2d1dd", "scanner": "scanner-primary", "fingerprint": "a3fd80940739b9c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/__browser__/DocsNav.browser.test.tsx"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-2cbfb2d0dcb81258", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/AutoCaptionsPanel.browser.test.tsx:69"}, "properties": {"repobilityId": "1d00bbde6c2a6354", "scanner": "scanner-primary", "fingerprint": "2cbfb2d0dcb81258", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/__browser__/AutoCaptionsPanel.browser.test.tsx"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-60feb72fa3a960d8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/__browser__/Inspector.browser.test.tsx:87"}, "properties": {"repobilityId": "e3f13a440214d817", "scanner": "scanner-primary", "fingerprint": "60feb72fa3a960d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/__browser__/Inspector.browser.test.tsx"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c15430b07049a00e", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f246bfb233815c35", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-7a973ec877f6704d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8e37e5a443b1878e", "scanner": "scanner-primary", "fingerprint": "7a973ec877f6704d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/browser-tests.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f5eb0222e1743c8d", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "69dd0abad9dba1dc", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8ead6a2c2bfe167b", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-37716d9c0a33ad5c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "abfb5752158cf655", "scanner": "scanner-primary", "fingerprint": "37716d9c0a33ad5c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a082f4c1924d23ae", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dbcb50968dc11dc2", "scanner": "scanner-primary", "fingerprint": "a082f4c1924d23ae", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/whip-integration.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "714673743ff59cef", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2def854cfce04944", "level": "note", "message": {"text": "Very large file: src/protocol.ts (2677 lines)"}, "properties": {"repobilityId": "2de08487a9bd9a16", "scanner": "scanner-primary", "fingerprint": "2def854cfce04944", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d791b03df98dab05", "level": "note", "message": {"text": "Very large file: src/ui/Inspector.tsx (1931 lines)"}, "properties": {"repobilityId": "738fd6b45c6494fb", "scanner": "scanner-primary", "fingerprint": "d791b03df98dab05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d3c18e1db156d8c", "level": "note", "message": {"text": "Very large file: src/ui/App.tsx (4084 lines)"}, "properties": {"repobilityId": "fb7cbaaec227cd6a", "scanner": "scanner-primary", "fingerprint": "5d3c18e1db156d8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6610701fba95e516", "level": "note", "message": {"text": "Very large file: src/engine/project.ts (1631 lines)"}, "properties": {"repobilityId": "823ffd52ec10539d", "scanner": "scanner-primary", "fingerprint": "6610701fba95e516", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f91fe6ab98bcdf85", "level": "note", "message": {"text": "Very large file: src/engine/gpu.ts (1456 lines)"}, "properties": {"repobilityId": "923460d68f9f7782", "scanner": "scanner-primary", "fingerprint": "f91fe6ab98bcdf85", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-88c5a45142f5ebab", "level": "note", "message": {"text": "Very large file: src/engine/timeline.ts (2527 lines)"}, "properties": {"repobilityId": "05530c02abce90a4", "scanner": "scanner-primary", "fingerprint": "88c5a45142f5ebab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d07ef5947576248", "level": "note", "message": {"text": "Very large file: src/engine/timeline.test.ts (2186 lines)"}, "properties": {"repobilityId": "f3923210708b3b50", "scanner": "scanner-primary", "fingerprint": "1d07ef5947576248", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b2282e6954b2a42", "level": "note", "message": {"text": "Very large file: src/engine/worker.ts (7892 lines)"}, "properties": {"repobilityId": "306c2f67754908b1", "scanner": "scanner-primary", "fingerprint": "5b2282e6954b2a42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f1c2655d559655c6", "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": "0d045a9316b17320", "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": "701a0fdae6388bea", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "b943f47abdbfbf27", "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": "b9c6698ad4747c0a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-a3b365492823c10c", "level": "none", "message": {"text": "Commented-code block (10 lines) in vite.config.ts:275"}, "properties": {"repobilityId": "c4c04b6897973897", "scanner": "scanner-primary", "fingerprint": "a3b365492823c10c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcaa709cf5d4aa82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ui/asr-bridge.ts:18"}, "properties": {"repobilityId": "cab7af985ddc6ccf", "scanner": "scanner-primary", "fingerprint": "fcaa709cf5d4aa82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-235b8fdcbb8c5bde", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ui/audio-engine.ts:175"}, "properties": {"repobilityId": "fc9a79356051ff5c", "scanner": "scanner-primary", "fingerprint": "235b8fdcbb8c5bde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7308329d549c46f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ui/SilenceReviewPanel.tsx:164"}, "properties": {"repobilityId": "7fbaa8e8872f7405", "scanner": "scanner-primary", "fingerprint": "7308329d549c46f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4df0f99daa8e0baa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ui/clock.ts:17"}, "properties": {"repobilityId": "53abb27b847741fb", "scanner": "scanner-primary", "fingerprint": "4df0f99daa8e0baa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bd476823879f6f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ui/App.tsx:1496"}, "properties": {"repobilityId": "e7b0ab88278601d2", "scanner": "scanner-primary", "fingerprint": "8bd476823879f6f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f39d7ced5a0c5488", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ui/App.tsx:578"}, "properties": {"repobilityId": "2b0872a8c6dbc11b", "scanner": "scanner-primary", "fingerprint": "f39d7ced5a0c5488", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45f02023a8ecc36b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/worker/index.ts:10"}, "properties": {"repobilityId": "dee22b16847c667b", "scanner": "scanner-primary", "fingerprint": "45f02023a8ecc36b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f58a2758628c2d58", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/project.ts:649"}, "properties": {"repobilityId": "a38c7eb7c0e8e765", "scanner": "scanner-primary", "fingerprint": "f58a2758628c2d58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-604e16d7d0b02870", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/transform.ts:156"}, "properties": {"repobilityId": "890c181fbe5a6e11", "scanner": "scanner-primary", "fingerprint": "604e16d7d0b02870", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06f6ed6f310bb94", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/capability-probe-v2.ts:498"}, "properties": {"repobilityId": "42332d478cee91fc", "scanner": "scanner-primary", "fingerprint": "f06f6ed6f310bb94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13d68a5e76d00f63", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/gpu.ts:1281"}, "properties": {"repobilityId": "bfc4324871570561", "scanner": "scanner-primary", "fingerprint": "13d68a5e76d00f63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb72cf14567d57a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/timeline.ts:465"}, "properties": {"repobilityId": "36e279fe3e7ff790", "scanner": "scanner-primary", "fingerprint": "bb72cf14567d57a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5c7baeaad2567ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/scopes.ts:174"}, "properties": {"repobilityId": "89140630e9f1188d", "scanner": "scanner-primary", "fingerprint": "d5c7baeaad2567ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63c095f8aa6050b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/hardware-probe.ts:89"}, "properties": {"repobilityId": "161f161d74315919", "scanner": "scanner-primary", "fingerprint": "63c095f8aa6050b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b446a141e111f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/engine/export.ts:728"}, "properties": {"repobilityId": "f9850bcc19e5e16a", "scanner": "scanner-primary", "fingerprint": "15b446a141e111f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d47618139ff3070", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/audio-resampler-wasm.ts:297"}, "properties": {"repobilityId": "fb29cc72218ea882", "scanner": "scanner-primary", "fingerprint": "9d47618139ff3070", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da33e59aa325a2ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/audio-resampler-wasm.test.ts:198"}, "properties": {"repobilityId": "37570d2aed564920", "scanner": "scanner-primary", "fingerprint": "da33e59aa325a2ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33c5c38ce2c5bee9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/transform.test.ts:120"}, "properties": {"repobilityId": "d5ec121ed7045a0e", "scanner": "scanner-primary", "fingerprint": "33c5c38ce2c5bee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c914734064d82640", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/engine/titles.ts:262"}, "properties": {"repobilityId": "910836d7bae19729", "scanner": "scanner-primary", "fingerprint": "c914734064d82640", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f18bbf3cd22619b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/playback.ts:246"}, "properties": {"repobilityId": "3d15f408d8b5164f", "scanner": "scanner-primary", "fingerprint": "f18bbf3cd22619b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72b70ab7d23d3a04", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/wsola.test.ts:164"}, "properties": {"repobilityId": "7ed497dea4ee4d28", "scanner": "scanner-primary", "fingerprint": "72b70ab7d23d3a04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff5a3ef3bdd46127", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/export.test.ts:994"}, "properties": {"repobilityId": "97bce1335116539d", "scanner": "scanner-primary", "fingerprint": "ff5a3ef3bdd46127", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0e3ac089d92a9b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/worker.ts:677"}, "properties": {"repobilityId": "7d447684a8f6d5e9", "scanner": "scanner-primary", "fingerprint": "b0e3ac089d92a9b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c2d6d0d48d8f64b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/voice-cleanup/ebu-r128.test.ts:27"}, "properties": {"repobilityId": "326a96db2887910c", "scanner": "scanner-primary", "fingerprint": "9c2d6d0d48d8f64b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fd47b9f071d26ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/compatibility/compatibility.test.ts:139"}, "properties": {"repobilityId": "1c254f90200b399f", "scanner": "scanner-primary", "fingerprint": "7fd47b9f071d26ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a63dad928e33ff51", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/engine/compatibility/canvas-compositor.ts:140"}, "properties": {"repobilityId": "0b75ca28e6af5198", "scanner": "scanner-primary", "fingerprint": "a63dad928e33ff51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e313e24e9459ae1e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/asr/asset-cache.ts:88"}, "properties": {"repobilityId": "1354e0e901d5fcf2", "scanner": "scanner-primary", "fingerprint": "e313e24e9459ae1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-431b95a1780dd199", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asset-cache.ts:87"}, "properties": {"repobilityId": "cd39a919f69058a1", "scanner": "scanner-primary", "fingerprint": "431b95a1780dd199", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20d88f6e99fa25d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/asr/asr-worker.ts:109"}, "properties": {"repobilityId": "8d1780716a830cc9", "scanner": "scanner-primary", "fingerprint": "20d88f6e99fa25d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bdf2c7b65f7d51ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/asr/litert-runtime.ts:228"}, "properties": {"repobilityId": "4e0bc3bcec3a06ec", "scanner": "scanner-primary", "fingerprint": "bdf2c7b65f7d51ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa75d8acdcf7bff4", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/asr/whisper-decode.ts:575"}, "properties": {"repobilityId": "2de0d96d64600355", "scanner": "scanner-primary", "fingerprint": "fa75d8acdcf7bff4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c7b972701d70331", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/engine/captions/render.ts:125"}, "properties": {"repobilityId": "13a9d6d5f402e207", "scanner": "scanner-primary", "fingerprint": "0c7b972701d70331", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99902a6f2a8edc0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/captions/model.ts:232"}, "properties": {"repobilityId": "40a5fd012dcf1507", "scanner": "scanner-primary", "fingerprint": "99902a6f2a8edc0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c33ae41a7422a7e4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/engine/captions/anim-style.ts:225"}, "properties": {"repobilityId": "45f5e3904818ce36", "scanner": "scanner-primary", "fingerprint": "c33ae41a7422a7e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97313ee7b7e1cdab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/reframe/mediapipe-loader.js:1"}, "properties": {"repobilityId": "d485fb8ee38939d4", "scanner": "scanner-primary", "fingerprint": "97313ee7b7e1cdab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89bd9d52d22104e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/reframe/reframe-analyzer.ts:140"}, "properties": {"repobilityId": "f19b18d0fd927ff5", "scanner": "scanner-primary", "fingerprint": "89bd9d52d22104e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb5b3c4c4bc401b3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/capture/key-overlay-generator.ts:84"}, "properties": {"repobilityId": "c0cc6993bdd078ef", "scanner": "scanner-primary", "fingerprint": "fb5b3c4c4bc401b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ea1452bba7362d0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/engine/matte/matte-engine.ts:331"}, "properties": {"repobilityId": "990daad063b744df", "scanner": "scanner-primary", "fingerprint": "3ea1452bba7362d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97ed8be306116082", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/matte/matte-engine.ts:355"}, "properties": {"repobilityId": "d3d0fe220022758b", "scanner": "scanner-primary", "fingerprint": "97ed8be306116082", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1aa671a01a95fe6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/engine/interpolation/interpolation-engine.ts:134"}, "properties": {"repobilityId": "8aa80d5727426233", "scanner": "scanner-primary", "fingerprint": "d1aa671a01a95fe6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7956fa728cfdd5ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/media-adapters/mediabunny-adapter.ts:574"}, "properties": {"repobilityId": "8ebd8f44eb7262be", "scanner": "scanner-primary", "fingerprint": "7956fa728cfdd5ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7f276c64d5b1759", "level": "note", "message": {"text": "Legacy-named symbol `groundOld` in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:246"}, "properties": {"repobilityId": "8b8f02d705d53701", "scanner": "scanner-primary", "fingerprint": "c7f276c64d5b1759", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7ff8d5438c40baf2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/engine/replay-buffer/ring-buffer.fuzz.test.ts:23"}, "properties": {"repobilityId": "336c567474cdb6a0", "scanner": "scanner-primary", "fingerprint": "7ff8d5438c40baf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}