{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7dbf573411cb4591", "name": "Stray `console.log` in TS/JS \u2014 server/src/index.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.js: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-0ba533093eb23b2f", "name": "Stray `console.log` in TS/JS \u2014 server/src/capture.js:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/capture.js:157"}, "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-7be3aebdca8e835f", "name": "Stray `console.log` in TS/JS \u2014 server/src/inputs/daisy-position.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/src/inputs/daisy-position.js:119"}, "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-fe3824daec6d9e72", "name": "Stray `console.log` in TS/JS \u2014 tools/preprocess.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/preprocess.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4bc78bf58e0de56", "name": "Stray `console.log` in TS/JS \u2014 tools/verify.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/verify.js:72"}, "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-a758adabf9b3ca36", "name": "Stray `console.log` in TS/JS \u2014 tools/replay/viz-ab.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/viz-ab.js:163"}, "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-d79c5f81692055bb", "name": "Stray `console.log` in TS/JS \u2014 tools/replay/replay.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/replay.js:96"}, "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-8e5ab53223c46c63", "name": "Stray `console.log` in TS/JS \u2014 tools/replay/smoke-session.js:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/smoke-session.js:125"}, "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-f4f03727e0e1a337", "name": "Stray `console.log` in TS/JS \u2014 tools/replay/feed-ab.js:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/feed-ab.js:150"}, "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-d044e0b49666c47a", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-occupancy.js:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-occupancy.js:246"}, "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-733c5478def28530", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-tape.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-tape.js:173"}, "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-fc275b6aff9b5935", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/viz-gate.js:247", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/viz-gate.js:247"}, "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-9d89423da134b122", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-presence.js:275", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-presence.js:275"}, "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-e199f331411ac9ee", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/sim.js:273", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/sim.js:273"}, "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-e2eb1eaaa4c4817b", "name": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-plugin.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-plugin.js:224"}, "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-55420132c77bdc42", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/index.html:5940", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/index.html:5940"}, "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-480c92852b8403ba", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/inspector.html:260", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/inspector.html:260"}, "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-7be276f2d9f2e19c", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/sequencer/sequencer.js:60", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/sequencer/sequencer.js:60"}, "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-3a0601d48ce35089", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/shared/ui.js:59", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/shared/ui.js:59"}, "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-f3a956633834c651", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/patches/patches.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/patches/patches.js:33"}, "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-f5c723b910f2d584", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/wavetable/wavetable.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/wavetable/wavetable.js:74"}, "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-0396f4f55ae7d1c9", "name": "Insecure pattern 'node_child_process' in server/src/capture.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/src/capture.js:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4916b677e7be7b2", "name": "Insecure pattern 'new_function_used' in tools/verify.js:9", "shortDescription": {"text": "Insecure pattern 'new_function_used' in tools/verify.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7926f01d50b4c882", "name": "Insecure pattern 'node_child_process' in tools/verify.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/verify.js:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ff4c15f3d3769c0", "name": "Insecure pattern 'node_child_process' in tools/replay/bridge-proc.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/replay/bridge-proc.js:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e59a741770db5809", "name": "Very large file: daisy/crates/dsp/src/procgen/mod.rs (1488 lines)", "shortDescription": {"text": "Very large file: daisy/crates/dsp/src/procgen/mod.rs (1488 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-d95cccd5aba07908", "name": "Very large file: server/src/gen/manifest.js (2521 lines)", "shortDescription": {"text": "Very large file: server/src/gen/manifest.js (2521 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-b3de863fc7ac8743", "name": "Very large file: server/src/gen/router.js (3169 lines)", "shortDescription": {"text": "Very large file: server/src/gen/router.js (3169 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "11 tests / 109 src (ratio 0.10)."}, "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 75 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 65 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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-baf506dd5ad1865d", "name": "Commented-code block (5 lines) in static/audio/shared/preview.js:22", "shortDescription": {"text": "Commented-code block (5 lines) in static/audio/shared/preview.js: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-ad44a892a7593a09", "name": "Commented-code block (5 lines) in static/audio/shared/patch-schema.js:55", "shortDescription": {"text": "Commented-code block (5 lines) in static/audio/shared/patch-schema.js:55"}, "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-7056c266cbcc7baf", "name": "Commented-code block (7 lines) in static/audio/shared/storage.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in static/audio/shared/storage.js: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-dcb3a51cdf15654f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 static/audio/shared/storage.js:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/audio/shared/storage.js:5"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f00c62c35a86a3a2", "name": "Commented-code block (5 lines) in static/audio/wavetable/wavetable.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in static/audio/wavetable/wavetable.js: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-e6e7cb40f81630dd", "name": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/sim.test.js:114", "shortDescription": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/sim.test.js:114"}, "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-a2dadd8c35b5c137", "name": "Commented-code block (5 lines) in server/test/plugin-host.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/test/plugin-host.test.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-22019c09d546ccb6", "name": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/bus.test.js:69", "shortDescription": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/bus.test.js:69"}, "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-83513ab28536926f", "name": "Commented-code block (5 lines) in server/test/bus.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/test/bus.test.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-2b80c79ec31851fc", "name": "Commented-code block (6 lines) in server/src/router-engine.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/router-engine.js: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-3b5d0704f4ef8229", "name": "Commented-code block (6 lines) in server/src/bus-adapter.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/bus-adapter.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-3ba5218808bf5bc3", "name": "Commented-code block (10 lines) in server/src/router-graph.js:7", "shortDescription": {"text": "Commented-code block (10 lines) in server/src/router-graph.js:7"}, "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-819be73dc6700513", "name": "Commented-code block (8 lines) in server/src/cc-binding.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in server/src/cc-binding.js: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-d7823db5b025552c", "name": "Commented-code block (5 lines) in server/src/registry.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/registry.js: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-4d154301599be8bc", "name": "Commented-code block (26 lines) in server/src/plugin-host.js:9", "shortDescription": {"text": "Commented-code block (26 lines) in server/src/plugin-host.js: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-0bd5f7cff696f4d6", "name": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/src/bus.js:375", "shortDescription": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/src/bus.js:375"}, "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-2de5597bb0e00f39", "name": "Commented-code block (17 lines) in server/src/bus.js:8", "shortDescription": {"text": "Commented-code block (17 lines) in server/src/bus.js: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-d6a729ed47350033", "name": "Commented-code block (11 lines) in server/src/index.js:19", "shortDescription": {"text": "Commented-code block (11 lines) in server/src/index.js: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-565405dc5206de0c", "name": "Commented-code block (5 lines) in server/src/capture.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/src/capture.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-d6e62769416ffad5", "name": "Commented-code block (6 lines) in server/src/inputs/mock.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/inputs/mock.js: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-edd1df901cc4d965", "name": "Commented-code block (9 lines) in server/src/inputs/daisy-position.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in server/src/inputs/daisy-position.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-b8e4d4f8332441f8", "name": "Commented-code block (6 lines) in server/src/plugins/toy-timer.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in server/src/plugins/toy-timer.js: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-81540ed9e683cc25", "name": "Commented-code block (18 lines) in server/src/plugins/presence-choreography.js:5", "shortDescription": {"text": "Commented-code block (18 lines) in server/src/plugins/presence-choreography.js: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-b9c0dc2e577d6a72", "name": "Commented-code block (7 lines) in server/src/plugins/mood-expander.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in server/src/plugins/mood-expander.js: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-c79a9497f3d28fd8", "name": "Commented-code block (7 lines) in tools/replay/viz-ab.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in tools/replay/viz-ab.js: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-de5dc9a1df936f87", "name": "Commented-code block (5 lines) in tools/replay/tolerances.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tools/replay/tolerances.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-554978f938bb852b", "name": "Commented-code block (7 lines) in tools/replay/replay.js:2", "shortDescription": {"text": "Commented-code block (7 lines) in tools/replay/replay.js:2"}, "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-4b1e61355e438394", "name": "Commented-code block (7 lines) in tools/replay/comparator.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in tools/replay/comparator.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-d8f29a499175c79f", "name": "Commented-code block (5 lines) in tools/replay/serialport-shim.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in tools/replay/serialport-shim.js: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-e72fd93a432e4168", "name": "Legacy-named symbol `pathToLegacy` in tools/replay/feed-ab.js:84", "shortDescription": {"text": "Legacy-named symbol `pathToLegacy` in tools/replay/feed-ab.js:84"}, "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-bf687cf114565a3b", "name": "Commented-code block (9 lines) in tools/replay/feed-ab.js:7", "shortDescription": {"text": "Commented-code block (9 lines) in tools/replay/feed-ab.js:7"}, "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-56b33ec119eef15e", "name": "Commented-code block (9 lines) in tools/sim/validate-occupancy.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in tools/sim/validate-occupancy.js: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-1a0ec6f3b4242c5a", "name": "Commented-code block (9 lines) in tools/sim/validate-tape.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in tools/sim/validate-tape.js: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-4999c9a7d9fca7ab", "name": "Commented-code block (8 lines) in tools/sim/viz-gate.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in tools/sim/viz-gate.js: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-d49bcb53bd80fd98", "name": "Commented-code block (5 lines) in tools/sim/validate-twist.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tools/sim/validate-twist.js:2"}, "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-a760123b45094551", "name": "Commented-code block (9 lines) in tools/sim/validate-presence.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in tools/sim/validate-presence.js: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-ea28fd7e5d80aa6c", "name": "Commented-code block (5 lines) in tools/sim/sim.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tools/sim/sim.js: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-0d16ab6265248689", "name": "Commented-code block (6 lines) in tools/sim/pump.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in tools/sim/pump.js:7"}, "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-cba46c6b49db50c2", "name": "Commented-code block (6 lines) in tools/sim/identity.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in tools/sim/identity.js: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-311358f2dcf314a6", "name": "Commented-code block (5 lines) in tools/sim/validate-bitmap.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in tools/sim/validate-bitmap.js: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-f744b47f97939a77", "name": "Commented-code block (5 lines) in tools/sim/validate-plugin.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in tools/sim/validate-plugin.js: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-1ab6937b276d139d", "name": "Commented-code block (6 lines) in tools/sim/presence-legacy-model.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in tools/sim/presence-legacy-model.js: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-8090174c8782bee9", "name": "Commented-code block (7 lines) in python/ambient_kiosk/config.py:5", "shortDescription": {"text": "Commented-code block (7 lines) in python/ambient_kiosk/config.py: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-94a082e4eb0304fa", "name": "Commented-code block (8 lines) in python/ambient_kiosk/sensors/distance.py:47", "shortDescription": {"text": "Commented-code block (8 lines) in python/ambient_kiosk/sensors/distance.py:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8ea35c56299eb26", "name": "Commented-code block (5 lines) in patches/wavetables/waldorf_wavetable.py:133", "shortDescription": {"text": "Commented-code block (5 lines) in patches/wavetables/waldorf_wavetable.py:133"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npython/ambient_kiosk/sensors/distance.py:probe, python/ambient_kiosk/sensors/distance.py:probe\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\npython/ambient_kiosk/sensors/distance.py:stop, python/ambient_kiosk/sensors/distance.py:stop, python/ambient_kiosk/sensors/distance.py:stop\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23558"}, "properties": {"repository": "zbuc/ambient_viz", "repoUrl": "https://github.com/zbuc/ambient_viz", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-7dbf573411cb4591", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/index.js:70"}, "properties": {"repobilityId": "320f2eb194d6231c", "scanner": "scanner-primary", "fingerprint": "7dbf573411cb4591", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ba533093eb23b2f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/capture.js:157"}, "properties": {"repobilityId": "cab88005ea205bbd", "scanner": "scanner-primary", "fingerprint": "0ba533093eb23b2f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7be3aebdca8e835f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/src/inputs/daisy-position.js:119"}, "properties": {"repobilityId": "97f76ec2408ced2d", "scanner": "scanner-primary", "fingerprint": "7be3aebdca8e835f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe3824daec6d9e72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/preprocess.js:23"}, "properties": {"repobilityId": "ab9a2a124c5e15e8", "scanner": "scanner-primary", "fingerprint": "fe3824daec6d9e72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4bc78bf58e0de56", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/verify.js:72"}, "properties": {"repobilityId": "6cb200bab1534f64", "scanner": "scanner-primary", "fingerprint": "b4bc78bf58e0de56", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a758adabf9b3ca36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/viz-ab.js:163"}, "properties": {"repobilityId": "8ee4b46aee4e306d", "scanner": "scanner-primary", "fingerprint": "a758adabf9b3ca36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d79c5f81692055bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/replay.js:96"}, "properties": {"repobilityId": "fd9a345cd89aa8a9", "scanner": "scanner-primary", "fingerprint": "d79c5f81692055bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e5ab53223c46c63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/smoke-session.js:125"}, "properties": {"repobilityId": "600afe0e52137a04", "scanner": "scanner-primary", "fingerprint": "8e5ab53223c46c63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4f03727e0e1a337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/replay/feed-ab.js:150"}, "properties": {"repobilityId": "162f63bb7fe935db", "scanner": "scanner-primary", "fingerprint": "f4f03727e0e1a337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d044e0b49666c47a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-occupancy.js:246"}, "properties": {"repobilityId": "6db26b691253c67d", "scanner": "scanner-primary", "fingerprint": "d044e0b49666c47a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-733c5478def28530", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-tape.js:173"}, "properties": {"repobilityId": "714d245365eb9b2b", "scanner": "scanner-primary", "fingerprint": "733c5478def28530", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc275b6aff9b5935", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/viz-gate.js:247"}, "properties": {"repobilityId": "15faede8aba215b0", "scanner": "scanner-primary", "fingerprint": "fc275b6aff9b5935", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d89423da134b122", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-presence.js:275"}, "properties": {"repobilityId": "6b72a20dcfce9f28", "scanner": "scanner-primary", "fingerprint": "9d89423da134b122", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e199f331411ac9ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/sim.js:273"}, "properties": {"repobilityId": "bc8aa1bf90600c7c", "scanner": "scanner-primary", "fingerprint": "e199f331411ac9ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2eb1eaaa4c4817b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sim/validate-plugin.js:224"}, "properties": {"repobilityId": "edb1c967dc8eb9f6", "scanner": "scanner-primary", "fingerprint": "e2eb1eaaa4c4817b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55420132c77bdc42", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/index.html:5940"}, "properties": {"repobilityId": "54c44d8c983139f7", "scanner": "scanner-primary", "fingerprint": "55420132c77bdc42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/index.html"}, "region": {"startLine": 5940}}}]}, {"ruleId": "scanner-480c92852b8403ba", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/inspector.html:260"}, "properties": {"repobilityId": "9dab6864025a5304", "scanner": "scanner-primary", "fingerprint": "480c92852b8403ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/inspector.html"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-7be276f2d9f2e19c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/sequencer/sequencer.js:60"}, "properties": {"repobilityId": "cc8d6f3e268caf08", "scanner": "scanner-primary", "fingerprint": "7be276f2d9f2e19c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/audio/sequencer/sequencer.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-3a0601d48ce35089", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/shared/ui.js:59"}, "properties": {"repobilityId": "669466c050695ced", "scanner": "scanner-primary", "fingerprint": "3a0601d48ce35089", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/audio/shared/ui.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-f3a956633834c651", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/patches/patches.js:33"}, "properties": {"repobilityId": "28e6fa90618aedd6", "scanner": "scanner-primary", "fingerprint": "f3a956633834c651", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/audio/patches/patches.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-f5c723b910f2d584", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/audio/wavetable/wavetable.js:74"}, "properties": {"repobilityId": "55c9e8ced5e55e43", "scanner": "scanner-primary", "fingerprint": "f5c723b910f2d584", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/audio/wavetable/wavetable.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-0396f4f55ae7d1c9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/src/capture.js:25"}, "properties": {"repobilityId": "fc659043932de47b", "scanner": "scanner-primary", "fingerprint": "0396f4f55ae7d1c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/capture.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-c4916b677e7be7b2", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in tools/verify.js:9"}, "properties": {"repobilityId": "2e6b6f9bd96424f4", "scanner": "scanner-primary", "fingerprint": "c4916b677e7be7b2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/verify.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-7926f01d50b4c882", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/verify.js:5"}, "properties": {"repobilityId": "3b4130e537ab2271", "scanner": "scanner-primary", "fingerprint": "7926f01d50b4c882", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/verify.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-3ff4c15f3d3769c0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/replay/bridge-proc.js:6"}, "properties": {"repobilityId": "389873943c08fbc0", "scanner": "scanner-primary", "fingerprint": "3ff4c15f3d3769c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/replay/bridge-proc.js"}, "region": {"startLine": 6}}}]}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-e59a741770db5809", "level": "note", "message": {"text": "Very large file: daisy/crates/dsp/src/procgen/mod.rs (1488 lines)"}, "properties": {"repobilityId": "c710a703abe87a2a", "scanner": "scanner-primary", "fingerprint": "e59a741770db5809", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d95cccd5aba07908", "level": "note", "message": {"text": "Very large file: server/src/gen/manifest.js (2521 lines)"}, "properties": {"repobilityId": "ecdb77a743aa5f42", "scanner": "scanner-primary", "fingerprint": "d95cccd5aba07908", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3de863fc7ac8743", "level": "note", "message": {"text": "Very large file: server/src/gen/router.js (3169 lines)"}, "properties": {"repobilityId": "d327f91fe26f3507", "scanner": "scanner-primary", "fingerprint": "b3de863fc7ac8743", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "19dc5f7be8357cb6", "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": "5832712577d5994d", "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": "cf89461f7700f427", "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": "0719720d3c3868f6", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "012455b89dac1510", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "7f3efc34d6722cb4", "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": "881ffa88650c6597", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-baf506dd5ad1865d", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/audio/shared/preview.js:22"}, "properties": {"repobilityId": "7f2f639c4b3bf814", "scanner": "scanner-primary", "fingerprint": "baf506dd5ad1865d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad44a892a7593a09", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/audio/shared/patch-schema.js:55"}, "properties": {"repobilityId": "cf926d1626daa0da", "scanner": "scanner-primary", "fingerprint": "ad44a892a7593a09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7056c266cbcc7baf", "level": "none", "message": {"text": "Commented-code block (7 lines) in static/audio/shared/storage.js:3"}, "properties": {"repobilityId": "057790957514ed16", "scanner": "scanner-primary", "fingerprint": "7056c266cbcc7baf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb3a51cdf15654f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 static/audio/shared/storage.js:5"}, "properties": {"repobilityId": "29e300a2e841d8ca", "scanner": "scanner-primary", "fingerprint": "dcb3a51cdf15654f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f00c62c35a86a3a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in static/audio/wavetable/wavetable.js:3"}, "properties": {"repobilityId": "f8a34f6d32f89e49", "scanner": "scanner-primary", "fingerprint": "f00c62c35a86a3a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6e7cb40f81630dd", "level": "note", "message": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/sim.test.js:114"}, "properties": {"repobilityId": "9ae6f1a3f5b0ba6d", "scanner": "scanner-primary", "fingerprint": "e6e7cb40f81630dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a2dadd8c35b5c137", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/test/plugin-host.test.js:1"}, "properties": {"repobilityId": "d0eebf99ce9850b2", "scanner": "scanner-primary", "fingerprint": "a2dadd8c35b5c137", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22019c09d546ccb6", "level": "note", "message": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/test/bus.test.js:69"}, "properties": {"repobilityId": "f154dec81815c91e", "scanner": "scanner-primary", "fingerprint": "22019c09d546ccb6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-83513ab28536926f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/test/bus.test.js:1"}, "properties": {"repobilityId": "0da9b815d8bf12b8", "scanner": "scanner-primary", "fingerprint": "83513ab28536926f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b80c79ec31851fc", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/router-engine.js:3"}, "properties": {"repobilityId": "be9fec9bce57999a", "scanner": "scanner-primary", "fingerprint": "2b80c79ec31851fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b5d0704f4ef8229", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/bus-adapter.js:1"}, "properties": {"repobilityId": "bb56733c2396ac42", "scanner": "scanner-primary", "fingerprint": "3b5d0704f4ef8229", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ba5218808bf5bc3", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/src/router-graph.js:7"}, "properties": {"repobilityId": "e656ff0f6a874e95", "scanner": "scanner-primary", "fingerprint": "3ba5218808bf5bc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-819be73dc6700513", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/src/cc-binding.js:4"}, "properties": {"repobilityId": "eb2c61482f93a178", "scanner": "scanner-primary", "fingerprint": "819be73dc6700513", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7823db5b025552c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/registry.js:3"}, "properties": {"repobilityId": "bd7dcc547aacb4ba", "scanner": "scanner-primary", "fingerprint": "d7823db5b025552c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d154301599be8bc", "level": "none", "message": {"text": "Commented-code block (26 lines) in server/src/plugin-host.js:9"}, "properties": {"repobilityId": "7e6722d670885f3f", "scanner": "scanner-primary", "fingerprint": "4d154301599be8bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bd5f7cff696f4d6", "level": "note", "message": {"text": "Legacy-named symbol `would_win_if_priority_ge_legacy` in server/src/bus.js:375"}, "properties": {"repobilityId": "70dfc2511a94f416", "scanner": "scanner-primary", "fingerprint": "0bd5f7cff696f4d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2de5597bb0e00f39", "level": "none", "message": {"text": "Commented-code block (17 lines) in server/src/bus.js:8"}, "properties": {"repobilityId": "e8077d3f4ed7b06b", "scanner": "scanner-primary", "fingerprint": "2de5597bb0e00f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6a729ed47350033", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/src/index.js:19"}, "properties": {"repobilityId": "6ac1f87c7028b296", "scanner": "scanner-primary", "fingerprint": "d6a729ed47350033", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-565405dc5206de0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/src/capture.js:1"}, "properties": {"repobilityId": "e047fc855ea4777b", "scanner": "scanner-primary", "fingerprint": "565405dc5206de0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6e62769416ffad5", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/inputs/mock.js:8"}, "properties": {"repobilityId": "49da7bcbb4958fcd", "scanner": "scanner-primary", "fingerprint": "d6e62769416ffad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edd1df901cc4d965", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/src/inputs/daisy-position.js:1"}, "properties": {"repobilityId": "80ab01b148164608", "scanner": "scanner-primary", "fingerprint": "edd1df901cc4d965", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8e4d4f8332441f8", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/src/plugins/toy-timer.js:3"}, "properties": {"repobilityId": "9c57c73a3ff2acdf", "scanner": "scanner-primary", "fingerprint": "b8e4d4f8332441f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81540ed9e683cc25", "level": "none", "message": {"text": "Commented-code block (18 lines) in server/src/plugins/presence-choreography.js:5"}, "properties": {"repobilityId": "86e27ee75a8a398b", "scanner": "scanner-primary", "fingerprint": "81540ed9e683cc25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9c0dc2e577d6a72", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/src/plugins/mood-expander.js:3"}, "properties": {"repobilityId": "c2b1fb88dd399018", "scanner": "scanner-primary", "fingerprint": "b9c0dc2e577d6a72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c79a9497f3d28fd8", "level": "none", "message": {"text": "Commented-code block (7 lines) in tools/replay/viz-ab.js:5"}, "properties": {"repobilityId": "e47bb4bea4e255a7", "scanner": "scanner-primary", "fingerprint": "c79a9497f3d28fd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de5dc9a1df936f87", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/replay/tolerances.js:1"}, "properties": {"repobilityId": "bace14e78b24e551", "scanner": "scanner-primary", "fingerprint": "de5dc9a1df936f87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-554978f938bb852b", "level": "none", "message": {"text": "Commented-code block (7 lines) in tools/replay/replay.js:2"}, "properties": {"repobilityId": "9f420aa6e4513dca", "scanner": "scanner-primary", "fingerprint": "554978f938bb852b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b1e61355e438394", "level": "none", "message": {"text": "Commented-code block (7 lines) in tools/replay/comparator.js:1"}, "properties": {"repobilityId": "2a55e824be10caa1", "scanner": "scanner-primary", "fingerprint": "4b1e61355e438394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8f29a499175c79f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/replay/serialport-shim.js:3"}, "properties": {"repobilityId": "0f745174ebbfb681", "scanner": "scanner-primary", "fingerprint": "d8f29a499175c79f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e72fd93a432e4168", "level": "note", "message": {"text": "Legacy-named symbol `pathToLegacy` in tools/replay/feed-ab.js:84"}, "properties": {"repobilityId": "334e8108bbb36322", "scanner": "scanner-primary", "fingerprint": "e72fd93a432e4168", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf687cf114565a3b", "level": "none", "message": {"text": "Commented-code block (9 lines) in tools/replay/feed-ab.js:7"}, "properties": {"repobilityId": "3ab0e728126958f8", "scanner": "scanner-primary", "fingerprint": "bf687cf114565a3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56b33ec119eef15e", "level": "none", "message": {"text": "Commented-code block (9 lines) in tools/sim/validate-occupancy.js:5"}, "properties": {"repobilityId": "3dcd5e12495e380e", "scanner": "scanner-primary", "fingerprint": "56b33ec119eef15e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a0ec6f3b4242c5a", "level": "none", "message": {"text": "Commented-code block (9 lines) in tools/sim/validate-tape.js:5"}, "properties": {"repobilityId": "7e2e6efb9de53d59", "scanner": "scanner-primary", "fingerprint": "1a0ec6f3b4242c5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4999c9a7d9fca7ab", "level": "none", "message": {"text": "Commented-code block (8 lines) in tools/sim/viz-gate.js:5"}, "properties": {"repobilityId": "2986f9a4a597b8da", "scanner": "scanner-primary", "fingerprint": "4999c9a7d9fca7ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d49bcb53bd80fd98", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/sim/validate-twist.js:2"}, "properties": {"repobilityId": "2962e9ec81cdaa31", "scanner": "scanner-primary", "fingerprint": "d49bcb53bd80fd98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a760123b45094551", "level": "none", "message": {"text": "Commented-code block (9 lines) in tools/sim/validate-presence.js:5"}, "properties": {"repobilityId": "772f9233b294e44d", "scanner": "scanner-primary", "fingerprint": "a760123b45094551", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea28fd7e5d80aa6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/sim/sim.js:4"}, "properties": {"repobilityId": "5e252c4181cdb14e", "scanner": "scanner-primary", "fingerprint": "ea28fd7e5d80aa6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d16ab6265248689", "level": "none", "message": {"text": "Commented-code block (6 lines) in tools/sim/pump.js:7"}, "properties": {"repobilityId": "4662c7f4746d0e89", "scanner": "scanner-primary", "fingerprint": "0d16ab6265248689", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cba46c6b49db50c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in tools/sim/identity.js:3"}, "properties": {"repobilityId": "49273853559d43f3", "scanner": "scanner-primary", "fingerprint": "cba46c6b49db50c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-311358f2dcf314a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/sim/validate-bitmap.js:6"}, "properties": {"repobilityId": "45997b5cb9299ec4", "scanner": "scanner-primary", "fingerprint": "311358f2dcf314a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f744b47f97939a77", "level": "none", "message": {"text": "Commented-code block (5 lines) in tools/sim/validate-plugin.js:8"}, "properties": {"repobilityId": "390f8b7f7d843344", "scanner": "scanner-primary", "fingerprint": "f744b47f97939a77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ab6937b276d139d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tools/sim/presence-legacy-model.js:3"}, "properties": {"repobilityId": "b1e62500a72950a9", "scanner": "scanner-primary", "fingerprint": "1ab6937b276d139d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8090174c8782bee9", "level": "none", "message": {"text": "Commented-code block (7 lines) in python/ambient_kiosk/config.py:5"}, "properties": {"repobilityId": "75527bdd608369f8", "scanner": "scanner-primary", "fingerprint": "8090174c8782bee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94a082e4eb0304fa", "level": "none", "message": {"text": "Commented-code block (8 lines) in python/ambient_kiosk/sensors/distance.py:47"}, "properties": {"repobilityId": "8abbbef7bc20edab", "scanner": "scanner-primary", "fingerprint": "94a082e4eb0304fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8ea35c56299eb26", "level": "none", "message": {"text": "Commented-code block (5 lines) in patches/wavetables/waldorf_wavetable.py:133"}, "properties": {"repobilityId": "7558b43153726c87", "scanner": "scanner-primary", "fingerprint": "c8ea35c56299eb26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e9205c438ca5e782", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c86deb2b64cd4408", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "de051d0268453189", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "777c18930bb1e25d", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}