{"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-aba6046228249b13", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-remember-me.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-remember-me.js:82"}, "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-a23184b4a0e10bb4", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-gap.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-gap.js:118"}, "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-8784d55f1fdee742", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-record.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-record.js:98"}, "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-943db8bb20880dc4", "name": "Stray `console.log` in TS/JS \u2014 scripts/plaid-link-capture.js:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/plaid-link-capture.js:151"}, "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-d96411923f2f5793", "name": "Stray `console.log` in TS/JS \u2014 scripts/record.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29b5f3d16ea1953c", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-narration-sync.js:268", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-narration-sync.js:268"}, "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-6fa3b1a22e04fdbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-plaid-integration-skill.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-plaid-integration-skill.js:29"}, "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-f95e30ff88ed2103", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link.js:302"}, "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-825ef4b7c103a91c", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze.js:34"}, "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-783ed14f65827f30", "name": "Stray `console.log` in TS/JS \u2014 scripts/start-eval-recorder.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/start-eval-recorder.js:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e72aba609897d3a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-nav-calibrate.js:380", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-nav-calibrate.js:380"}, "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-979c713b4ed9f03f", "name": "Stray `console.log` in TS/JS \u2014 scripts/resync-audio.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resync-audio.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1eb9cae1a9e4c95", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-rerun-pipeline.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-rerun-pipeline.js:49"}, "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-c0f0a107a25be310", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-slide-agent-patches.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-slide-agent-patches.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bd1048c37e7e7c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-smart-plaid-agent.js:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-smart-plaid-agent.js:234"}, "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-e25685b21050a5a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-audio.js:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-audio.js:208"}, "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-5e623fbd70443be0", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-voiceover.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-voiceover.js:92"}, "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-b61468a78edb5796", "name": "Stray `console.log` in TS/JS \u2014 scripts/preview-app.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-app.js:52"}, "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-44b12efda8d5e6cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/record-idv.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-idv.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2ff31a3aade0a39", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-remotion-props.js:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-remotion-props.js:141"}, "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-edf65ff5af9b898d", "name": "Stray `console.log` in TS/JS \u2014 scripts/embed-sync.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/embed-sync.js:93"}, "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-09c8ab89d86824e9", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-layer.js:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-layer.js:136"}, "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-fe0dbbaf029bd3b3", "name": "Stray `console.log` in TS/JS \u2014 scripts/refresh-timing-contract-after-resync.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/refresh-timing-contract-after-resync.js:135"}, "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-6960456272e6e381", "name": "Stray `console.log` in TS/JS \u2014 scripts/post-process-recording.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/post-process-recording.js:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31a71025e510304d", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-redo-slides-showcase.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-redo-slides-showcase.js:18"}, "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-7100b8dcfcf4cbfc", "name": "Stray `console.log` in TS/JS \u2014 scripts/dashboard/server.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dashboard/server.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e9d0c20b67ef27c", "name": "Icon-only button without accessible name \u2014 scripts/dashboard/public/dashboard.js:2815", "shortDescription": {"text": "Icon-only button without accessible name \u2014 scripts/dashboard/public/dashboard.js:2815"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d72a5ff07770dec", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/touchup.js:273", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/touchup.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-2d3e2e7ac642ba71", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/analyze-recording-mm.js:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/analyze-recording-mm.js:187"}, "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-6bb0063271951dec", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/manual-record.js:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/manual-record.js:139"}, "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-43cf2ad7ec95b2f6", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/research.js:344", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/research.js:344"}, "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-b616ccc1e7ed2065", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/pipeline-watchdog.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/pipeline-watchdog.js:40"}, "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-9f8eb1ab2a2e8f49", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/verify-cra-link-token-matrix.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/verify-cra-link-token-matrix.js:34"}, "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-84133f512be9a929", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-master-screens-ppt.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-master-screens-ppt.js:121"}, "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-925c053407641327", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-ppt.js:444", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-ppt.js:444"}, "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-0370214ed111f0ce", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/render-moviepy.js:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/render-moviepy.js:184"}, "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-4ac494ff24b3281f", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/debug-plaid-link.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/debug-plaid-link.js:44"}, "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-f607a63bed1e22d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/orchestrator.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/orchestrator.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a196a6744bfbf65", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/simulate-product-knowledge.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/simulate-product-knowledge.js:58"}, "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-65aba3977265ce06", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-recipe-executor.js:421", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-recipe-executor.js:421"}, "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-2a5508edf5b07021", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-handoff.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-handoff.js:71"}, "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-69b41b555f2f68b6", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/strip-slide-roots-for-post-slides.js:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/strip-slide-roots-for-post-slides.js:137"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c88cb76a955889c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/check-publish-safety.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/check-publish-safety.js:154"}, "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-f940eb3ea51ffe9a", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-backend.js:432", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-backend.js:432"}, "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-a4be74989dd13b5f", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/validate-pipeline-env.js:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/validate-pipeline-env.js:210"}, "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-c1c079cff7dec248", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-heartbeat.js:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-heartbeat.js:207"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc6deb95cf5b9c79", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/run-io.js:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/run-io.js:162"}, "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-63d9a04db6672c83", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-nav-feedback.js:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-nav-feedback.js:107"}, "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-31d77e7b217c2943", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/app-server.js:649", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/app-server.js:649"}, "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-9d131f60b0465c2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/generate-slide-template-registry.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/generate-slide-template-registry.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-329b7a0e8802439f", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-browser-agent.js:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-browser-agent.js:314"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2ec0ea344e792a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/export-plaid-deck.js:313", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/export-plaid-deck.js:313"}, "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-d1171cca54b3d32c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/smart-plaid-agent.js:253", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/smart-plaid-agent.js:253"}, "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-a3ab0d4c80714790", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/qa-review.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/qa-review.js:172"}, "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-e6ccddf72543a89c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/coverage-check.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/coverage-check.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fad038864262b96", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/embed-script-validate.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/embed-script-validate.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-dc4ce6e5e37ca8f4", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/prompt-fidelity-check.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/prompt-fidelity-check.js:93"}, "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-54db7d9567c5e4eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/app-touchup.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/app-touchup.js:73"}, "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-7559b5a7016cf0cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-extract.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-extract.js:153"}, "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-2f9854f251f3cf98", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/figma-review.js:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/figma-review.js:113"}, "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-424d1cf2fa40d283", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/story-echo-check.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/story-echo-check.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61ec17197844e4dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/live-api-capture.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/live-api-capture.js:153"}, "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-4eea0eb7f72b037a", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/repace-narration.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/repace-narration.js:153"}, "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-5d1b7df2f24fc779", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-local.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-local.js:45"}, "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-a0f52448f92c3b5c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-clone.js:284", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-clone.js:284"}, "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-c4f993fb2c006f86", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/set-recording-dwells.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/set-recording-dwells.js:133"}, "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-26c4f7a069a935e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/plaid-link-qa.js:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/plaid-link-qa.js:280"}, "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-8fef52f2d8a7f0da", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-slides.js:700", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-slides.js:700"}, "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-3c964892bfe5fb58", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/scene-match-check.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/scene-match-check.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-9b5c3529b65e6e45", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ai-suggest-overlays.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ai-suggest-overlays.js: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-3d6dfb574f59dc68", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-qa.js:4113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-qa.js:4113"}, "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-0dfa3dc5a6154bf0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-panels.js:721", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-panels.js:721"}, "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-270342889ee28ea6", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/slide-fix.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/slide-fix.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf5d61b4903a9e0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/measure-sync-debt.js:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/measure-sync-debt.js:277"}, "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-45a652c1c4e0d9a9", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/_slide_regen_driver.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/_slide_regen_driver.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2e11288b798cbbb", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/data-realism-check.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/data-realism-check.js:74"}, "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-07fcc90e63c0a958", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/mcp-video-edit.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/mcp-video-edit.js:121"}, "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-34cf796de9ad4ec3", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/gemini-narration-qa.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/gemini-narration-qa.js:133"}, "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-1a0782c8e513ac73", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-plaid-manual.js:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-plaid-manual.js:144"}, "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-6a001d765083e6cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ingest.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ingest.js:47"}, "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-074c9306544a00da", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-app.js:272", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-app.js:272"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b011ecb7b489d0d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/generate-script.js:1159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/generate-script.js:1159"}, "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-c7366c74520e714e", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/combine.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/combine.js:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-860b29e545173a1d", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/analyze-video.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/analyze-video.js:89"}, "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-6a1f2761e5ecf70e", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/segment.js:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/segment.js:148"}, "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-e4bc92cd5a757611", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/enhance-script.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/enhance-script.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47da4c84bd8ffee9", "name": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/overlay-plan.js:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/overlay-plan.js:143"}, "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-d4c97cee42af21eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/prefetch-mcp-packages.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/prefetch-mcp-packages.js:63"}, "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-12701bb86f484869", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup/test-vertex-auth.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/test-vertex-auth.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-503e70baf55fb64f", "name": "Stray `console.log` in TS/JS \u2014 eval-recorder/server.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 eval-recorder/server.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-469bcd1fb1c00427", "name": "Insecure pattern 'node_child_process' in package.json:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in package.json:30"}, "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-826e20bff2376f48", "name": "Possible secret in scripts/test-plaid-link-remember-me.js", "shortDescription": {"text": "Possible secret in scripts/test-plaid-link-remember-me.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-672b6759f9f4f85e", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/test-plaid-link-record.js:260", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/test-plaid-link-record.js: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-0161b01f018259b5", "name": "Possible secret in scripts/record.js", "shortDescription": {"text": "Possible secret in scripts/record.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-604120cb500efb78", "name": "Insecure pattern 'node_child_process' in scripts/check-run-sync.mjs:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-run-sync.mjs:19"}, "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-388c12763418db0b", "name": "Possible secret in scripts/test-plaid-link.js", "shortDescription": {"text": "Possible secret in scripts/test-plaid-link.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e049fd26b1c4556c", "name": "Insecure pattern 'cors_wildcard' in scripts/test-plaid-link.js:121", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/test-plaid-link.js:121"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd486debcf5dadd4", "name": "Insecure pattern 'node_child_process' in scripts/analyze.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/analyze.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a59bf4e99703681b", "name": "Insecure pattern 'node_child_process' in scripts/start-eval-recorder.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/start-eval-recorder.js:19"}, "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-83304fd243a58be1", "name": "Insecure pattern 'node_child_process' in scripts/resync-audio.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/resync-audio.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-e52588e585519db2", "name": "Insecure pattern 'node_child_process' in scripts/batch-rerun-pipeline.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/batch-rerun-pipeline.js:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23bf6eb903bf60b8", "name": "Possible secret in scripts/test-smart-plaid-agent.js", "shortDescription": {"text": "Possible secret in scripts/test-smart-plaid-agent.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7e66cb58fd1d74f3", "name": "Insecure pattern 'cors_wildcard' in scripts/test-smart-plaid-agent.js:99", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/test-smart-plaid-agent.js:99"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3bb1f2d893512e90", "name": "Insecure pattern 'new_function_used' in scripts/sync-audio.js:112", "shortDescription": {"text": "Insecure pattern 'new_function_used' in scripts/sync-audio.js:112"}, "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-72191b0f5da0cfa5", "name": "Insecure pattern 'node_child_process' in scripts/sync-audio.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sync-audio.js:26"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b00e92d5a46f8f7b", "name": "Insecure pattern 'node_child_process' in scripts/generate-voiceover.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/generate-voiceover.js:19"}, "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-058929c0046e9278", "name": "Insecure pattern 'node_child_process' in scripts/embed-sync.js:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/embed-sync.js:32"}, "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-2121e5eec820af3c", "name": "Insecure pattern 'node_child_process' in scripts/post-process-recording.js:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/post-process-recording.js:34"}, "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-3a89c77e39a9d97f", "name": "Insecure pattern 'node_child_process' in scripts/batch-redo-slides-showcase.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/batch-redo-slides-showcase.js:13"}, "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-14364d69de1551b7", "name": "Insecure pattern 'node_child_process' in scripts/dashboard/server.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dashboard/server.js:27"}, "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-658139a4348b499e", "name": "Insecure pattern 'cors_wildcard' in scripts/dashboard/server.js:934", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/dashboard/server.js:934"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebd1803c7efabece", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/dashboard.js:87", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/dashboard.js: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-3b93572c845d9173", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/ai-overlay.js:445", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/ai-overlay.js:445"}, "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-c82717127980ebd1", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/timeline.html:958", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/timeline.html:958"}, "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-2d9d8e495f371df8", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/prompt-viewer.html:289", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/prompt-viewer.html:289"}, "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-ae4bf6f6048502d5", "name": "Insecure pattern 'node_child_process' in scripts/scratch/touchup.js:38", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/touchup.js:38"}, "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-10079251c7e523cd", "name": "Insecure pattern 'node_child_process' in scripts/scratch/mcp-client.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/mcp-client.js:17"}, "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-89d550d163b3501d", "name": "Insecure pattern 'node_child_process' in scripts/scratch/analyze-recording-mm.js:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/analyze-recording-mm.js:30"}, "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-1d3ece12047a0eef", "name": "Insecure pattern 'node_child_process' in scripts/scratch/manual-record.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/manual-record.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-7b48b57cd1911e6a", "name": "Insecure pattern 'cors_wildcard' in scripts/scratch/manual-record.js:244", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/manual-record.js:244"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a47cbbb7f20f04f", "name": "Insecure pattern 'node_child_process' in scripts/scratch/pipeline-watchdog.js:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/pipeline-watchdog.js:24"}, "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-b655d8f38d139647", "name": "Insecure pattern 'node_child_process' in scripts/scratch/render-moviepy.js:44", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/render-moviepy.js:44"}, "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-e6296e73795df08e", "name": "Insecure pattern 'node_child_process' in scripts/scratch/debug-plaid-link.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/debug-plaid-link.js:27"}, "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-5141646a1596b403", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/debug-plaid-link.js:206", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/debug-plaid-link.js:206"}, "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-c27bc470857ced68", "name": "Insecure pattern 'cors_wildcard' in scripts/scratch/debug-plaid-link.js:392", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/debug-plaid-link.js:392"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-717c6ced1e786b11", "name": "Insecure pattern 'node_child_process' in scripts/scratch/orchestrator.js:49", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/orchestrator.js:49"}, "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-21573dc80e7453c9", "name": "Insecure pattern 'new_function_used' in scripts/scratch/utils/plaid-recipe-executor.js:199", "shortDescription": {"text": "Insecure pattern 'new_function_used' in scripts/scratch/utils/plaid-recipe-executor.js:199"}, "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-6a5eeee86545cace", "name": "Insecure pattern 'node_child_process' in scripts/scratch/utils/mcp-clients.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/utils/mcp-clients.js:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-99f836b2fda2dca8", "name": "Insecure pattern 'node_child_process' in scripts/scratch/utils/identity.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/utils/identity.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-90be2b8724df6b93", "name": "Insecure pattern 'cors_wildcard' in scripts/scratch/utils/app-server.js:244", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/utils/app-server.js:244"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c18519379a57607", "name": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js", "shortDescription": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-dfe9fe3db4b39d85", "name": "Possible secret in scripts/scratch/utils/smart-plaid-agent.js", "shortDescription": {"text": "Possible secret in scripts/scratch/utils/smart-plaid-agent.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-202313463ebe9d90", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/qa-review.js:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/qa-review.js:30"}, "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-856bbb0329f0b8da", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/figma-review.js:43", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/figma-review.js:43"}, "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-f6f7abec68ca2d27", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/record-local.js:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/record-local.js:29"}, "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-bc49063a2c2e12a5", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/brand-clone.js:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/brand-clone.js:7"}, "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-dc2b36ecaa27c094", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/scene-match-check.js:37", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/scene-match-check.js:37"}, "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-e22f7f28550a6bb8", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/build-qa.js:3603", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/build-qa.js:3603"}, "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-ed898121eb1cd545", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/post-panels.js:326", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/post-panels.js:326"}, "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-c4c0253f61d2f633", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/mcp-video-edit.js:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/mcp-video-edit.js:40"}, "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-f07e186b89ce840b", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/gemini-narration-qa.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/gemini-narration-qa.js:17"}, "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-ec46e05bf91d69c5", "name": "Possible secret in scripts/scratch/scratch/record-plaid-manual.js", "shortDescription": {"text": "Possible secret in scripts/scratch/scratch/record-plaid-manual.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cadd6a61fd76c8f7", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/record-plaid-manual.js:266", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/record-plaid-manual.js:266"}, "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-2b4f8971002e2bd7", "name": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/ingest.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/ingest.js:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-664d5063f5a42f91", "name": "Insecure pattern 'insert_adjacent_html' in scripts/scratch/scratch/build-app.js:1705", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in scripts/scratch/scratch/build-app.js:1705"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3bad8eb999e0931d", "name": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/combine.js:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/combine.js:35"}, "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-d4f932a4f446d779", "name": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/analyze-video.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/analyze-video.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-f1e19784d37fd62b", "name": "Insecure pattern 'node_child_process' in scripts/setup/prefetch-mcp-packages.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/setup/prefetch-mcp-packages.js:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ed8ca7f88dba447", "name": "Insecure pattern 'direct_innerhtml_assignment' in assetlib/plaid-link.js:28", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assetlib/plaid-link.js:28"}, "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-9ba8fd3a27978fbd", "name": "Insecure pattern 'direct_innerhtml_assignment' in tmp-showcase/index.html:1189", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tmp-showcase/index.html:1189"}, "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-1e32fb46eeaedf28", "name": "Insecure pattern 'direct_innerhtml_assignment' in brand slide design/deck-stage.js:853", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in brand slide design/deck-stage.js:853"}, "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-f76ef60fe109ddab", "name": "Insecure pattern 'node_child_process' in eval-recorder/server.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in eval-recorder/server.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-7db87550ff2b33e0", "name": "Very large file: scripts/test-plaid-link.js (1243 lines)", "shortDescription": {"text": "Very large file: scripts/test-plaid-link.js (1243 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-8b4df5e11d31afe9", "name": "Very large file: scripts/dashboard/server.js (6497 lines)", "shortDescription": {"text": "Very large file: scripts/dashboard/server.js (6497 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-a59e90f1920fb582", "name": "Very large file: scripts/dashboard/public/dashboard.js (5535 lines)", "shortDescription": {"text": "Very large file: scripts/dashboard/public/dashboard.js (5535 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-fea914039af17f0e", "name": "Very large file: scripts/scratch/research.js (1922 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/research.js (1922 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-52852404e4cd26ed", "name": "Very large file: scripts/scratch/orchestrator.js (4878 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/orchestrator.js (4878 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-7a36a335897dc420", "name": "Very large file: scripts/scratch/utils/prompt-templates.js (3407 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/utils/prompt-templates.js (3407 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-4248b1c0d39200b0", "name": "Very large file: scripts/scratch/utils/plaid-backend.js (1349 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/utils/plaid-backend.js (1349 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-743dfe42a2e08288", "name": "Very large file: scripts/scratch/utils/qa-patch-library.js (1180 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/utils/qa-patch-library.js (1180 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-b393bec3f167e7a9", "name": "Very large file: scripts/scratch/scratch/record-local.js (3216 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/scratch/record-local.js (3216 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-30d0482a8992c2d6", "name": "Very large file: scripts/scratch/scratch/build-qa.js (5428 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/scratch/build-qa.js (5428 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-245bb9b82978afab", "name": "Very large file: scripts/scratch/scratch/post-panels.js (1864 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/scratch/post-panels.js (1864 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-c8bc26b37d0375ac", "name": "Very large file: scripts/scratch/scratch/build-app.js (3990 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/scratch/build-app.js (3990 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-aa86e320626c56c4", "name": "Very large file: scripts/scratch/scratch/generate-script.js (1763 lines)", "shortDescription": {"text": "Very large file: scripts/scratch/scratch/generate-script.js (1763 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-6f08b2a8d1638edd", "name": "Very large file: brand slide design/deck-stage.js (1748 lines)", "shortDescription": {"text": "Very large file: brand slide design/deck-stage.js (1748 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 1412 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 185 placeholder/mock markers across 31 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5adb044949cf0dc7", "name": "Agent authority lacks a verifier contract: .claude/skills/advanced-prompting-techniques/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/advanced-prompting-techniques/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4cc96574dbc3a966", "name": "Agent instruction/config may expose a secret: .claude/skills/plaid-layer-idv-onboarding/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: .claude/skills/plaid-layer-idv-onboarding/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c92f814deca924bd", "name": "Agent authority lacks a verifier contract: .claude/skills/plaid-integration-bundle/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/plaid-integration-bundle/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e05f1d480c722ea", "name": "Agent authority lacks a verifier contract: .claude/skills/audio-sync-mastery/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/audio-sync-mastery/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff6b25f1b10e906f", "name": "Agent authority lacks a verifier contract: .cursor/rules/plaid-workhorse-slides.mdc", "shortDescription": {"text": "Agent authority lacks a verifier contract: .cursor/rules/plaid-workhorse-slides.mdc"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1184605438665ce", "name": "Commented-code block (5 lines) in tests/unit/slide-contract-cascade.test.js:98", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/slide-contract-cascade.test.js:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b37e9d0552ff3cd", "name": "Commented-code block (6 lines) in tests/unit/prompt-fidelity-integration.test.js:2", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/prompt-fidelity-integration.test.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-b74dfe80d2769694", "name": "Commented-code block (6 lines) in tests/unit/prompt-templates.test.js:101", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/prompt-templates.test.js:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb384104066290b5", "name": "Commented-code block (5 lines) in tests/unit/link-token-create-config.test.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/link-token-create-config.test.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b485b0b7af6f7116", "name": "Commented-code block (6 lines) in tests/unit/dotenv-loader.test.js:76", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/dotenv-loader.test.js:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a0275974214a5bb", "name": "Commented-code block (6 lines) in tests/unit/prompt-scope.test.js:58", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/prompt-scope.test.js:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1d9c530a5c927a4", "name": "Commented-code block (6 lines) in tests/unit/build-qa.test.js:153", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/build-qa.test.js:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a67c85970e931fec", "name": "Commented-code block (6 lines) in scripts/auto-gap.js:59", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/auto-gap.js:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b93fe36341e0bea", "name": "Commented-code block (5 lines) in scripts/test-plaid-link-record.js:453", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-plaid-link-record.js:453"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c72a28f8a2bc6225", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link-record.js:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link-record.js:249"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0b60ed3cf15c33f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/plaid-link-capture.js:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/plaid-link-capture.js:76"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fcd0376182baf3a", "name": "Commented-code block (5 lines) in scripts/validate-narration-sync.js:188", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/validate-narration-sync.js:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78ef5ffaae88a777", "name": "Commented-code block (9 lines) in scripts/check-run-sync.mjs:7", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/check-run-sync.mjs: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-5b079c5f6619b493", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link.js:329", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link.js:329"}, "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-4ee56e7d837cea0f", "name": "Commented-code block (5 lines) in scripts/sync-map-utils.js:37", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/sync-map-utils.js:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99041b4d448c3ec9", "name": "Commented-code block (6 lines) in scripts/batch-rerun-pipeline.js:134", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/batch-rerun-pipeline.js:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65a43ca807ce54c0", "name": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-voiceover.js:25", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-voiceover.js:25"}, "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-ab677d0829a41d08", "name": "Commented-code block (6 lines) in scripts/generate-voiceover.js:40", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/generate-voiceover.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2762cf9c065a19d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-voiceover.js:373", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-voiceover.js:373"}, "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-6486b11ee8fe6334", "name": "Commented-code block (6 lines) in scripts/embed-sync.js:144", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/embed-sync.js:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1618b213727b55b0", "name": "Commented-code block (6 lines) in scripts/test-plaid-layer.js:503", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/test-plaid-layer.js:503"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffe0e971d411e6cd", "name": "Commented-code block (6 lines) in scripts/post-process-recording.js:56", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/post-process-recording.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8364d6c3e29f00e9", "name": "Legacy-named symbol `respondApprovalDeprecated` in scripts/dashboard/server.js:4026", "shortDescription": {"text": "Legacy-named symbol `respondApprovalDeprecated` in scripts/dashboard/server.js:4026"}, "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-3430b026bab3daf2", "name": "Commented-code block (5 lines) in scripts/dashboard/server.js:240", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dashboard/server.js:240"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0c02cdbc34ffc91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/server.js:3854", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/server.js:3854"}, "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-2cebf1358eaa0fac", "name": "Commented-code block (5 lines) in scripts/dashboard/utils/insert-slide-html.js:194", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dashboard/utils/insert-slide-html.js:194"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ed88c65e87549d0", "name": "Commented-code block (5 lines) in scripts/dashboard/utils/slide-thumbnail.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dashboard/utils/slide-thumbnail.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0160363661a6fce3", "name": "Commented-code block (10 lines) in scripts/dashboard/public/dashboard.js:2069", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/dashboard/public/dashboard.js:2069"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-481daae7f99f1e32", "name": "Commented-code block (5 lines) in scripts/dashboard/public/ai-overlay.js:40", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dashboard/public/ai-overlay.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e114752fd1fec37", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/public/ai-overlay.js:771", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/public/ai-overlay.js:771"}, "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-31d0839af0233b1c", "name": "Commented-code block (8 lines) in scripts/scratch/research.js:267", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scratch/research.js:267"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e735da64c52b8768", "name": "Commented-code block (7 lines) in scripts/scratch/render-moviepy.js:173", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/render-moviepy.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-346b0840fed77f6c", "name": "Legacy-named symbol `multilingual_v2` in scripts/scratch/orchestrator.js:3849", "shortDescription": {"text": "Legacy-named symbol `multilingual_v2` in scripts/scratch/orchestrator.js:3849"}, "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-b2bfcfea03be89bb", "name": "Commented-code block (5 lines) in scripts/scratch/orchestrator.js:880", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/orchestrator.js:880"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-536cb43c83003d12", "name": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-router.js:21", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-router.js:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7bc85d1378f2a81", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/vertex-embed.js:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/vertex-embed.js:44"}, "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-0981a612ae497cf3", "name": "Commented-code block (8 lines) in scripts/scratch/utils/brand-fidelity.js:64", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scratch/utils/brand-fidelity.js:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-804b2db787edf510", "name": "Commented-code block (5 lines) in scripts/scratch/utils/stage-state.js:131", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/stage-state.js:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4e5c0f19bf4fbaf", "name": "Legacy-named symbol `audit_copy` in scripts/scratch/utils/product-profiles.js:102", "shortDescription": {"text": "Legacy-named symbol `audit_copy` in scripts/scratch/utils/product-profiles.js:102"}, "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-4781901cbe5aeb00", "name": "Commented-code block (7 lines) in scripts/scratch/utils/slide-css-scoper.js:202", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/slide-css-scoper.js:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8202e47581bc3dcd", "name": "Commented-code block (7 lines) in scripts/scratch/utils/prompt-fidelity.js:103", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/prompt-fidelity.js:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da5092b6c3e59591", "name": "Commented-code block (8 lines) in scripts/scratch/utils/qa-touchup.js:422", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scratch/utils/qa-touchup.js:422"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63e6b5eab90bfeee", "name": "Commented-code block (5 lines) in scripts/scratch/utils/prompt-templates.js:501", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/prompt-templates.js:501"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5bd5f74b436924c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/prompt-templates.js:1910", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/prompt-templates.js:1910"}, "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-b7c25d240e02b3ac", "name": "Commented-code block (6 lines) in scripts/scratch/utils/check-publish-safety.js:18", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/check-publish-safety.js: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-0c4999d3a44ac828", "name": "Commented-code block (6 lines) in scripts/scratch/utils/plaid-backend.js:166", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/plaid-backend.js:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3744819347300bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/plaid-backend.js:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/plaid-backend.js:4"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c1b16bed5118c2e", "name": "Commented-code block (5 lines) in scripts/scratch/utils/anthropic-models.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/anthropic-models.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6678d9120c9e7d3f", "name": "Commented-code block (7 lines) in scripts/scratch/utils/qa-patch-library.js:32", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/qa-patch-library.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e412b013be9ff2b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/qa-patch-library.js:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/qa-patch-library.js:119"}, "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-5577b570d8991e0f", "name": "Commented-code block (6 lines) in scripts/scratch/utils/prompt-scope.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/prompt-scope.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-04c833c5f0b4707d", "name": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-registry.js:61", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-registry.js:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be6e1fdabf7ce5e3", "name": "Commented-code block (6 lines) in scripts/scratch/utils/link-token-create-config.js:173", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/link-token-create-config.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2a386824a5fcb0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/validate-pipeline-env.js:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/validate-pipeline-env.js:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6b5e38a44db1883e", "name": "Commented-code block (5 lines) in scripts/scratch/utils/slide-mint-cap.js:49", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/slide-mint-cap.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8845a90b97b31895", "name": "Commented-code block (5 lines) in scripts/scratch/utils/product-knowledge-coverage.js:301", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/product-knowledge-coverage.js:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba778bfecc7da982", "name": "Commented-code block (7 lines) in scripts/scratch/utils/run-io.js:146", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/run-io.js:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82c6fd7d367a9518", "name": "Commented-code block (6 lines) in scripts/scratch/utils/app-server.js:296", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/app-server.js:296"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48d4b4dca7f93c63", "name": "Commented-code block (5 lines) in scripts/scratch/scratch/qa-review.js:57", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/qa-review.js:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8a33cd84c5193c5", "name": "Commented-code block (7 lines) in scripts/scratch/scratch/brand-extract.js:98", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/brand-extract.js:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-300ffaaf2654bcea", "name": "Commented-code block (7 lines) in scripts/scratch/scratch/story-echo-check.js:52", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/story-echo-check.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a525aeddfab7322", "name": "Commented-code block (6 lines) in scripts/scratch/scratch/record-local.js:114", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/record-local.js:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6259c75bccd5df83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-local.js:2444", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-local.js:2444"}, "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-f622f8f0c07498c4", "name": "Commented-code block (6 lines) in scripts/scratch/scratch/plaid-link-qa.js:26", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/plaid-link-qa.js:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e7001d7ff918e8b", "name": "Commented-code block (6 lines) in scripts/scratch/scratch/post-slides.js:75", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/post-slides.js:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a56b8e3ca22b4c5f", "name": "Commented-code block (7 lines) in scripts/scratch/scratch/scene-match-check.js:157", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/scene-match-check.js:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f34023f29e81d68", "name": "Commented-code block (5 lines) in scripts/scratch/scratch/build-qa.js:228", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/build-qa.js: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-bf3593edd24e83f9", "name": "Legacy-named symbol `account_funding_v1` in scripts/scratch/scratch/post-panels.js:554", "shortDescription": {"text": "Legacy-named symbol `account_funding_v1` in scripts/scratch/scratch/post-panels.js:554"}, "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-f9f7eaf6bd1dbad5", "name": "Commented-code block (8 lines) in scripts/scratch/scratch/post-panels.js:158", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scratch/scratch/post-panels.js:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ea44032c70592a8", "name": "Commented-code block (5 lines) in scripts/scratch/scratch/slide-fix.js:241", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/slide-fix.js:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00e5c17c832a5e50", "name": "Legacy-named symbol `multilingual_v2` in scripts/scratch/scratch/measure-sync-debt.js:44", "shortDescription": {"text": "Legacy-named symbol `multilingual_v2` in scripts/scratch/scratch/measure-sync-debt.js:44"}, "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-210d4c796ee2f08b", "name": "Commented-code block (8 lines) in scripts/scratch/scratch/measure-sync-debt.js:43", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scratch/scratch/measure-sync-debt.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a48dfbfd3e7be5e1", "name": "Commented-code block (5 lines) in scripts/scratch/scratch/data-realism-check.js:137", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/data-realism-check.js:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e246086c84282752", "name": "Commented-code block (6 lines) in scripts/scratch/scratch/mcp-video-edit.js:126", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/mcp-video-edit.js:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-681c8b162b478482", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/gemini-narration-qa.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/gemini-narration-qa.js:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a204d498a185a48", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-plaid-manual.js:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-plaid-manual.js:93"}, "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-adac8f67727e80d7", "name": "Legacy-named symbol `framesDirLegacy` in scripts/scratch/scratch/build-app.js:2736", "shortDescription": {"text": "Legacy-named symbol `framesDirLegacy` in scripts/scratch/scratch/build-app.js:2736"}, "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-53f29111a5b9950c", "name": "Commented-code block (7 lines) in scripts/scratch/scratch/build-app.js:115", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/build-app.js:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cde8de2f3b0828a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/build-app.js:3850", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/build-app.js:3850"}, "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-1a0cea8e4e08764b", "name": "Commented-code block (5 lines) in scripts/scratch/scratch/generate-script.js:277", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/generate-script.js:277"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b338c278f12f160b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/enhance/analyze-video.js:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/enhance/analyze-video.js:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-595f76697e75fe45", "name": "Commented-code block (5 lines) in remotion/ScratchComposition.jsx:89", "shortDescription": {"text": "Commented-code block (5 lines) in remotion/ScratchComposition.jsx: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-7e4a747e5e2fbe04", "name": "Commented-code block (5 lines) in brand slide design/deck-stage.js:631", "shortDescription": {"text": "Commented-code block (5 lines) in brand slide design/deck-stage.js:631"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2b9de76d215015d", "name": "221 env vars used in code but missing from .env.example", "shortDescription": {"text": "221 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_SUGGEST_AUTO_APPLY`, `AI_SUGGEST_SCREEN_THRESHOLD`, `AI_SUGGEST_THRESHOLD`, `ANALYZE_MODEL`, `ANALYZE_VIDEO_MODEL`, `APP_TOUCHUP_MAX_ITERATIONS`, `ASKBILL_MCP_URL`, `AUDIO_QA_FREEZE_S` + 213 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb2568f2f50500dc", "name": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}?output_format=${OUTPUT_FORMAT} (scripts/gen", "shortDescription": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}?output_format=${OUTPUT_FORMAT} (scripts/generate-voiceover.js:373)"}, "fullDescription": {"text": "`scripts/generate-voiceover.js:373` calls `POST https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}?output_format=${OUTPUT_FORMAT}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.elevenlabs.io/v1/text-to-speech/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c95e530c0ccd60f2", "name": "Dangling fetch: GET https://api.elevenlabs.io/v1/voices (scripts/dashboard/server.js:3854)", "shortDescription": {"text": "Dangling fetch: GET https://api.elevenlabs.io/v1/voices (scripts/dashboard/server.js:3854)"}, "fullDescription": {"text": "`scripts/dashboard/server.js:3854` calls `GET https://api.elevenlabs.io/v1/voices` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.elevenlabs.io/v1/voices`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b56591ef18611201", "name": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:290)", "shortDescription": {"text": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:290)"}, "fullDescription": {"text": "`scripts/scratch/manual-record.js:290` calls `POST /__step-event` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/__step-event`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2c91a66cd0152fd", "name": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:302)", "shortDescription": {"text": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:302)"}, "fullDescription": {"text": "`scripts/scratch/manual-record.js:302` calls `POST /__step-event` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/__step-event`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc8e71dd71f85468", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/scratch/utils/validate-pipeline-env.js:33)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/scratch/utils/validate-pipeline-env.js:33)"}, "fullDescription": {"text": "`scripts/scratch/utils/validate-pipeline-env.js:33` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b158f39cd85b7cc", "name": "Unused endpoint: USE /api/slide-library", "shortDescription": {"text": "Unused endpoint: USE /api/slide-library"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `USE /api/slide-library` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1c12077ee7ef0d2", "name": "Unused endpoint: USE /static", "shortDescription": {"text": "Unused endpoint: USE /static"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `USE /static` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca0ee8c086b37844", "name": "Unused endpoint: GET /api/runs", "shortDescription": {"text": "Unused endpoint: GET /api/runs"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99c618c1648a21b2", "name": "Unused endpoint: GET /api/slide-library", "shortDescription": {"text": "Unused endpoint: GET /api/slide-library"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/slide-library` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6759cc24db0498e", "name": "Unused endpoint: GET /api/slide-library/slides/:slideId/html", "shortDescription": {"text": "Unused endpoint: GET /api/slide-library/slides/:slideId/html"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/slide-library/slides/:slideId/html` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9a0ee55f64485ac", "name": "Unused endpoint: POST /api/slide-library/upload", "shortDescription": {"text": "Unused endpoint: POST /api/slide-library/upload"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/slide-library/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdca8992997fcf2a", "name": "Unused endpoint: GET /api/slide-library/slides/:slideId/asset", "shortDescription": {"text": "Unused endpoint: GET /api/slide-library/slides/:slideId/asset"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/slide-library/slides/:slideId/asset` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92509bec069fbcb5", "name": "Unused endpoint: POST /api/slide-library/slides/:slideId/ai-edit", "shortDescription": {"text": "Unused endpoint: POST /api/slide-library/slides/:slideId/ai-edit"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/slide-library/slides/:slideId/ai-edit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b492dc33c9135c50", "name": "Unused endpoint: POST /api/slide-library/slides/:slideId/rename", "shortDescription": {"text": "Unused endpoint: POST /api/slide-library/slides/:slideId/rename"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/slide-library/slides/:slideId/rename` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c7b4923429599c3", "name": "Unused endpoint: POST /api/slide-library/submit", "shortDescription": {"text": "Unused endpoint: POST /api/slide-library/submit"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/slide-library/submit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afc49b2cd1b13417", "name": "Unused endpoint: POST /api/runs/allocate", "shortDescription": {"text": "Unused endpoint: POST /api/runs/allocate"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/allocate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d999c292832092e7", "name": "Unused endpoint: GET /api/runs/:runId", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56a55930e2b26af7", "name": "Unused endpoint: GET /api/runs/:runId/script", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/script"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/script` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c87552d46a84a9c", "name": "Unused endpoint: GET /api/runs/:runId/qa", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/qa"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/qa` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b241f4cda5d39ec", "name": "Unused endpoint: GET /api/runs/:runId/audio-sync-status", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/audio-sync-status"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/audio-sync-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cddc0fee5b5fde21", "name": "Unused endpoint: GET /api/runs/:runId/frames", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/frames"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/frames` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea1044d33b38aca9", "name": "Unused endpoint: GET /api/runs/:runId/frames/:filename", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/frames/:filename"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/frames/:filename` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1eb69953b3384bc5", "name": "Unused endpoint: POST /api/runs/:runId/capture-build-screenshots", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/capture-build-screenshots"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/capture-build-screenshots` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a218828f632082d", "name": "Unused endpoint: GET /api/files/:runId/*", "shortDescription": {"text": "Unused endpoint: GET /api/files/:runId/*"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/files/:runId/*` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e8463d5f636715b", "name": "Unused endpoint: GET /api/runs/:runId/download-app-package", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/download-app-package"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/download-app-package` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7aa4b2518cbbbfa2", "name": "Unused endpoint: GET /api/config", "shortDescription": {"text": "Unused endpoint: GET /api/config"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1309b6a1617af0a6", "name": "Unused endpoint: POST /api/config", "shortDescription": {"text": "Unused endpoint: POST /api/config"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6435a23ee501b0e", "name": "Unused endpoint: GET /api/config/prompt", "shortDescription": {"text": "Unused endpoint: GET /api/config/prompt"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/config/prompt` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa437c39b68e3e8d", "name": "Unused endpoint: POST /api/config/prompt", "shortDescription": {"text": "Unused endpoint: POST /api/config/prompt"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/config/prompt` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ffb85876e0d3540", "name": "Unused endpoint: POST /api/runs/:runId/script", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/script"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/script` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d96ad00cbfb0dbda", "name": "Unused endpoint: GET /api/runs/:runId/staleness", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/staleness"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/staleness` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60b1922d8c5de870", "name": "Unused endpoint: POST /api/runs/:runId/storyboard-live-preview", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/storyboard-live-preview"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/storyboard-live-preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-116ade790312d990", "name": "Unused endpoint: GET /api/runs/:runId/sync-map", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/sync-map"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/sync-map` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fb4deb215b7ae39", "name": "Unused endpoint: POST /api/runs/:runId/sync-map-segment", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/sync-map-segment"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/sync-map-segment` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02a39f10556e8a66", "name": "Unused endpoint: POST /api/runs/:runId/reorder-steps", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/reorder-steps"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/reorder-steps` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0296119df729567e", "name": "Unused endpoint: POST /api/runs/:runId/open-studio", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/open-studio"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/open-studio` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6ed8275e1b848dc", "name": "Unused endpoint: POST /api/runs/:runId/rebuild-props", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/rebuild-props"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/rebuild-props` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61f40d22041a664f", "name": "Unused endpoint: GET /api/runs/:runId/studio-status", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/studio-status"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/studio-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d00e44e482bb8ad8", "name": "Unused endpoint: GET /api/fs/watch", "shortDescription": {"text": "Unused endpoint: GET /api/fs/watch"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/fs/watch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-852ff0a631ba140a", "name": "Unused endpoint: POST /api/runs/:runId/narration-rewrite", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/narration-rewrite"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/narration-rewrite` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7046ad2a363332bb", "name": "Unused endpoint: GET /api/runs/:runId/brand", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/brand"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/brand` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1108404b1158a9c6", "name": "Unused endpoint: POST /api/runs/:runId/generate-step", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/generate-step"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/generate-step` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1c4fb6ce8707181", "name": "Unused endpoint: POST /api/runs/:runId/insert-step", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/insert-step"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/insert-step` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e704b689f7817b0", "name": "Unused endpoint: POST /api/runs/:runId/insert-library-slide", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/insert-library-slide"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/insert-library-slide` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64eb3849a8d3388e", "name": "Unused endpoint: POST /api/runs/:runId/remove-step", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/remove-step"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/remove-step` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-885496963c3ace9f", "name": "Unused endpoint: GET /api/feedback", "shortDescription": {"text": "Unused endpoint: GET /api/feedback"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/feedback` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-398f6be5d7b308bc", "name": "Unused endpoint: POST /api/feedback/export", "shortDescription": {"text": "Unused endpoint: POST /api/feedback/export"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/feedback/export` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0704ea5a7652c623", "name": "Unused endpoint: GET /api/runs/:runId/timing", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/timing"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/timing` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6690d67dc5ef4d4f", "name": "Unused endpoint: GET /api/runs/:runId/auto-gap", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/auto-gap"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/auto-gap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e36079a1f77e255b", "name": "Unused endpoint: POST /api/runs/:runId/auto-gap-overrides", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/auto-gap-overrides"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/auto-gap-overrides` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e681f9a5fd13e4a5", "name": "Unused endpoint: GET /api/runs/:runId/overlay-suggestions", "shortDescription": {"text": "Unused endpoint: GET /api/runs/:runId/overlay-suggestions"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/runs/:runId/overlay-suggestions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee64089b10e7ccb4", "name": "Unused endpoint: POST /api/runs/:runId/apply-suggestion", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/apply-suggestion"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/apply-suggestion` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2756a7a9144b058", "name": "Unused endpoint: POST /api/runs/:runId/apply-all-suggestions", "shortDescription": {"text": "Unused endpoint: POST /api/runs/:runId/apply-all-suggestions"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `POST /api/runs/:runId/apply-all-suggestions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e120fff75b0bff32", "name": "Unused endpoint: GET /api/elevenlabs/voices", "shortDescription": {"text": "Unused endpoint: GET /api/elevenlabs/voices"}, "fullDescription": {"text": "`scripts/dashboard/server.js` declares `GET /api/elevenlabs/voices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21098"}, "properties": {"repository": "thedmaj/demo-recorder", "repoUrl": "https://github.com/thedmaj/demo-recorder", "branch": "main"}, "results": [{"ruleId": "scanner-aba6046228249b13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-remember-me.js:82"}, "properties": {"repobilityId": "dd8e8e61a1465904", "scanner": "scanner-primary", "fingerprint": "aba6046228249b13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a23184b4a0e10bb4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-gap.js:118"}, "properties": {"repobilityId": "7af3e7b4098e879c", "scanner": "scanner-primary", "fingerprint": "a23184b4a0e10bb4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8784d55f1fdee742", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link-record.js:98"}, "properties": {"repobilityId": "b2a9921948135134", "scanner": "scanner-primary", "fingerprint": "8784d55f1fdee742", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-943db8bb20880dc4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/plaid-link-capture.js:151"}, "properties": {"repobilityId": "b3fbe4dcc12b5dd2", "scanner": "scanner-primary", "fingerprint": "943db8bb20880dc4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d96411923f2f5793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record.js:27"}, "properties": {"repobilityId": "a49a97a60a6b7e39", "scanner": "scanner-primary", "fingerprint": "d96411923f2f5793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29b5f3d16ea1953c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-narration-sync.js:268"}, "properties": {"repobilityId": "72de7bc0fb7d9a8e", "scanner": "scanner-primary", "fingerprint": "29b5f3d16ea1953c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fa3b1a22e04fdbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-plaid-integration-skill.js:29"}, "properties": {"repobilityId": "c9db7a6d63e7ef74", "scanner": "scanner-primary", "fingerprint": "6fa3b1a22e04fdbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f95e30ff88ed2103", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-link.js:302"}, "properties": {"repobilityId": "9ca9467be279e957", "scanner": "scanner-primary", "fingerprint": "f95e30ff88ed2103", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-825ef4b7c103a91c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze.js:34"}, "properties": {"repobilityId": "95c867b978917ca7", "scanner": "scanner-primary", "fingerprint": "825ef4b7c103a91c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-783ed14f65827f30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/start-eval-recorder.js:149"}, "properties": {"repobilityId": "94cca6af71b6712c", "scanner": "scanner-primary", "fingerprint": "783ed14f65827f30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e72aba609897d3a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-nav-calibrate.js:380"}, "properties": {"repobilityId": "7d035a0ad0fe827e", "scanner": "scanner-primary", "fingerprint": "e72aba609897d3a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-979c713b4ed9f03f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resync-audio.js:43"}, "properties": {"repobilityId": "56bb8ed23d558fd6", "scanner": "scanner-primary", "fingerprint": "979c713b4ed9f03f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1eb9cae1a9e4c95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-rerun-pipeline.js:49"}, "properties": {"repobilityId": "246388b8339e0e06", "scanner": "scanner-primary", "fingerprint": "e1eb9cae1a9e4c95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0f0a107a25be310", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-slide-agent-patches.js:35"}, "properties": {"repobilityId": "5c5828848553230c", "scanner": "scanner-primary", "fingerprint": "c0f0a107a25be310", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bd1048c37e7e7c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-smart-plaid-agent.js:234"}, "properties": {"repobilityId": "a56090af8c2c1cdc", "scanner": "scanner-primary", "fingerprint": "3bd1048c37e7e7c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e25685b21050a5a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-audio.js:208"}, "properties": {"repobilityId": "30abc7ef5fc949ea", "scanner": "scanner-primary", "fingerprint": "e25685b21050a5a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e623fbd70443be0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-voiceover.js:92"}, "properties": {"repobilityId": "17633e876d74e14c", "scanner": "scanner-primary", "fingerprint": "5e623fbd70443be0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b61468a78edb5796", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-app.js:52"}, "properties": {"repobilityId": "e5487b86676645ed", "scanner": "scanner-primary", "fingerprint": "b61468a78edb5796", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44b12efda8d5e6cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/record-idv.js:36"}, "properties": {"repobilityId": "1dec180b52e552f5", "scanner": "scanner-primary", "fingerprint": "44b12efda8d5e6cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2ff31a3aade0a39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-remotion-props.js:141"}, "properties": {"repobilityId": "0ccf3169e5e04ee3", "scanner": "scanner-primary", "fingerprint": "b2ff31a3aade0a39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-edf65ff5af9b898d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/embed-sync.js:93"}, "properties": {"repobilityId": "2332c25b747e7bd0", "scanner": "scanner-primary", "fingerprint": "edf65ff5af9b898d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09c8ab89d86824e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-plaid-layer.js:136"}, "properties": {"repobilityId": "843d5544cb71d060", "scanner": "scanner-primary", "fingerprint": "09c8ab89d86824e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe0dbbaf029bd3b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/refresh-timing-contract-after-resync.js:135"}, "properties": {"repobilityId": "1621ab0b842cb157", "scanner": "scanner-primary", "fingerprint": "fe0dbbaf029bd3b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6960456272e6e381", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/post-process-recording.js:69"}, "properties": {"repobilityId": "6450c1afbdcdd989", "scanner": "scanner-primary", "fingerprint": "6960456272e6e381", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31a71025e510304d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-redo-slides-showcase.js:18"}, "properties": {"repobilityId": "fb4ba4e55c584365", "scanner": "scanner-primary", "fingerprint": "31a71025e510304d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7100b8dcfcf4cbfc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dashboard/server.js:15"}, "properties": {"repobilityId": "c2c593f8c949b9fa", "scanner": "scanner-primary", "fingerprint": "7100b8dcfcf4cbfc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e9d0c20b67ef27c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 scripts/dashboard/public/dashboard.js:2815"}, "properties": {"repobilityId": "8bf3e091fa704c47", "scanner": "scanner-primary", "fingerprint": "7e9d0c20b67ef27c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4d72a5ff07770dec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/touchup.js:273"}, "properties": {"repobilityId": "0a9384b8159e351d", "scanner": "scanner-primary", "fingerprint": "4d72a5ff07770dec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d3e2e7ac642ba71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/analyze-recording-mm.js:187"}, "properties": {"repobilityId": "ccf599cce7525b9f", "scanner": "scanner-primary", "fingerprint": "2d3e2e7ac642ba71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bb0063271951dec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/manual-record.js:139"}, "properties": {"repobilityId": "e06cede0db243cf1", "scanner": "scanner-primary", "fingerprint": "6bb0063271951dec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43cf2ad7ec95b2f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/research.js:344"}, "properties": {"repobilityId": "b49b3623c3b39630", "scanner": "scanner-primary", "fingerprint": "43cf2ad7ec95b2f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b616ccc1e7ed2065", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/pipeline-watchdog.js:40"}, "properties": {"repobilityId": "9e50685bae3472de", "scanner": "scanner-primary", "fingerprint": "b616ccc1e7ed2065", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f8eb1ab2a2e8f49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/verify-cra-link-token-matrix.js:34"}, "properties": {"repobilityId": "7480224fc16c2f0b", "scanner": "scanner-primary", "fingerprint": "9f8eb1ab2a2e8f49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84133f512be9a929", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-master-screens-ppt.js:121"}, "properties": {"repobilityId": "83a3e6e10c5fa0db", "scanner": "scanner-primary", "fingerprint": "84133f512be9a929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-925c053407641327", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/generate-ppt.js:444"}, "properties": {"repobilityId": "2dcc93888b343f9b", "scanner": "scanner-primary", "fingerprint": "925c053407641327", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0370214ed111f0ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/render-moviepy.js:184"}, "properties": {"repobilityId": "ccc501b7c301180d", "scanner": "scanner-primary", "fingerprint": "0370214ed111f0ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ac494ff24b3281f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/debug-plaid-link.js:44"}, "properties": {"repobilityId": "febaf26295451a9c", "scanner": "scanner-primary", "fingerprint": "4ac494ff24b3281f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f607a63bed1e22d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/orchestrator.js:36"}, "properties": {"repobilityId": "c696b577c0faa80f", "scanner": "scanner-primary", "fingerprint": "f607a63bed1e22d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a196a6744bfbf65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/simulate-product-knowledge.js:58"}, "properties": {"repobilityId": "41132de4c14bbae0", "scanner": "scanner-primary", "fingerprint": "4a196a6744bfbf65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65aba3977265ce06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-recipe-executor.js:421"}, "properties": {"repobilityId": "f2cb0ffc7abf3267", "scanner": "scanner-primary", "fingerprint": "65aba3977265ce06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a5508edf5b07021", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-handoff.js:71"}, "properties": {"repobilityId": "cac5a705cf7c81c3", "scanner": "scanner-primary", "fingerprint": "2a5508edf5b07021", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69b41b555f2f68b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/strip-slide-roots-for-post-slides.js:137"}, "properties": {"repobilityId": "62defe08e06108f3", "scanner": "scanner-primary", "fingerprint": "69b41b555f2f68b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c88cb76a955889c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/check-publish-safety.js:154"}, "properties": {"repobilityId": "4db7c012d8c6ec0e", "scanner": "scanner-primary", "fingerprint": "c88cb76a955889c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f940eb3ea51ffe9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-backend.js:432"}, "properties": {"repobilityId": "3c501566026fd51c", "scanner": "scanner-primary", "fingerprint": "f940eb3ea51ffe9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4be74989dd13b5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/validate-pipeline-env.js:210"}, "properties": {"repobilityId": "f582243329c64f1c", "scanner": "scanner-primary", "fingerprint": "a4be74989dd13b5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1c079cff7dec248", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/pipeline-heartbeat.js:207"}, "properties": {"repobilityId": "69ef8aa3e64d5859", "scanner": "scanner-primary", "fingerprint": "c1c079cff7dec248", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc6deb95cf5b9c79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/run-io.js:162"}, "properties": {"repobilityId": "8d94e9e8df3c1b5d", "scanner": "scanner-primary", "fingerprint": "fc6deb95cf5b9c79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63d9a04db6672c83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-nav-feedback.js:107"}, "properties": {"repobilityId": "7c423002b67f8611", "scanner": "scanner-primary", "fingerprint": "63d9a04db6672c83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31d77e7b217c2943", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/app-server.js:649"}, "properties": {"repobilityId": "8cd80c949bc6d5e9", "scanner": "scanner-primary", "fingerprint": "31d77e7b217c2943", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d131f60b0465c2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/generate-slide-template-registry.js:42"}, "properties": {"repobilityId": "6846c2a2e5c35792", "scanner": "scanner-primary", "fingerprint": "9d131f60b0465c2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-329b7a0e8802439f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/plaid-browser-agent.js:314"}, "properties": {"repobilityId": "a4c67da53e4d182c", "scanner": "scanner-primary", "fingerprint": "329b7a0e8802439f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2ec0ea344e792a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/export-plaid-deck.js:313"}, "properties": {"repobilityId": "99d0eef72894f5fb", "scanner": "scanner-primary", "fingerprint": "c2ec0ea344e792a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1171cca54b3d32c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/utils/smart-plaid-agent.js:253"}, "properties": {"repobilityId": "6473600850680503", "scanner": "scanner-primary", "fingerprint": "d1171cca54b3d32c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3ab0d4c80714790", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/qa-review.js:172"}, "properties": {"repobilityId": "4f3c46c8ee51d2c2", "scanner": "scanner-primary", "fingerprint": "a3ab0d4c80714790", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e6ccddf72543a89c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/coverage-check.js:27"}, "properties": {"repobilityId": "ae5060c3a5c11685", "scanner": "scanner-primary", "fingerprint": "e6ccddf72543a89c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fad038864262b96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/embed-script-validate.js:119"}, "properties": {"repobilityId": "fd830eb820163b84", "scanner": "scanner-primary", "fingerprint": "3fad038864262b96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc4ce6e5e37ca8f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/prompt-fidelity-check.js:93"}, "properties": {"repobilityId": "4cdfe1054964a26a", "scanner": "scanner-primary", "fingerprint": "dc4ce6e5e37ca8f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54db7d9567c5e4eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/app-touchup.js:73"}, "properties": {"repobilityId": "3af73459b08889a7", "scanner": "scanner-primary", "fingerprint": "54db7d9567c5e4eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7559b5a7016cf0cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-extract.js:153"}, "properties": {"repobilityId": "49983df76932176e", "scanner": "scanner-primary", "fingerprint": "7559b5a7016cf0cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f9854f251f3cf98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/figma-review.js:113"}, "properties": {"repobilityId": "dbe4b0cab3766542", "scanner": "scanner-primary", "fingerprint": "2f9854f251f3cf98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-424d1cf2fa40d283", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/story-echo-check.js:81"}, "properties": {"repobilityId": "96a2f381f23ad2d3", "scanner": "scanner-primary", "fingerprint": "424d1cf2fa40d283", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61ec17197844e4dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/live-api-capture.js:153"}, "properties": {"repobilityId": "3bb8abc805b20165", "scanner": "scanner-primary", "fingerprint": "61ec17197844e4dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4eea0eb7f72b037a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/repace-narration.js:153"}, "properties": {"repobilityId": "fe2a395edb024465", "scanner": "scanner-primary", "fingerprint": "4eea0eb7f72b037a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d1b7df2f24fc779", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-local.js:45"}, "properties": {"repobilityId": "fa3a13d591419934", "scanner": "scanner-primary", "fingerprint": "5d1b7df2f24fc779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0f52448f92c3b5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/brand-clone.js:284"}, "properties": {"repobilityId": "36ad35b58169bbc8", "scanner": "scanner-primary", "fingerprint": "a0f52448f92c3b5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4f993fb2c006f86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/set-recording-dwells.js:133"}, "properties": {"repobilityId": "3475a71d81ea9d26", "scanner": "scanner-primary", "fingerprint": "c4f993fb2c006f86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26c4f7a069a935e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/plaid-link-qa.js:280"}, "properties": {"repobilityId": "7657b3cbbdba955a", "scanner": "scanner-primary", "fingerprint": "26c4f7a069a935e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fef52f2d8a7f0da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-slides.js:700"}, "properties": {"repobilityId": "859e33c98f22c554", "scanner": "scanner-primary", "fingerprint": "8fef52f2d8a7f0da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c964892bfe5fb58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/scene-match-check.js:224"}, "properties": {"repobilityId": "4d2adc1a672ad2e7", "scanner": "scanner-primary", "fingerprint": "3c964892bfe5fb58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b5c3529b65e6e45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ai-suggest-overlays.js:105"}, "properties": {"repobilityId": "478fab3cdc185a67", "scanner": "scanner-primary", "fingerprint": "9b5c3529b65e6e45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d6dfb574f59dc68", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-qa.js:4113"}, "properties": {"repobilityId": "036e5c25bc1b608c", "scanner": "scanner-primary", "fingerprint": "3d6dfb574f59dc68", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0dfa3dc5a6154bf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/post-panels.js:721"}, "properties": {"repobilityId": "d3b266004e9e3a36", "scanner": "scanner-primary", "fingerprint": "0dfa3dc5a6154bf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-270342889ee28ea6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/slide-fix.js:68"}, "properties": {"repobilityId": "8ec85f3d7fc7720b", "scanner": "scanner-primary", "fingerprint": "270342889ee28ea6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf5d61b4903a9e0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/measure-sync-debt.js:277"}, "properties": {"repobilityId": "2a77c32345798212", "scanner": "scanner-primary", "fingerprint": "bf5d61b4903a9e0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45a652c1c4e0d9a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/_slide_regen_driver.js:32"}, "properties": {"repobilityId": "e307cfc15a0c467f", "scanner": "scanner-primary", "fingerprint": "45a652c1c4e0d9a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e11288b798cbbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/data-realism-check.js:74"}, "properties": {"repobilityId": "673dea24d69e7705", "scanner": "scanner-primary", "fingerprint": "b2e11288b798cbbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07fcc90e63c0a958", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/mcp-video-edit.js:121"}, "properties": {"repobilityId": "2c720763f87741ef", "scanner": "scanner-primary", "fingerprint": "07fcc90e63c0a958", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34cf796de9ad4ec3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/gemini-narration-qa.js:133"}, "properties": {"repobilityId": "a16f90bbcb7e74bf", "scanner": "scanner-primary", "fingerprint": "34cf796de9ad4ec3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a0782c8e513ac73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/record-plaid-manual.js:144"}, "properties": {"repobilityId": "746ff39482d9693d", "scanner": "scanner-primary", "fingerprint": "1a0782c8e513ac73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a001d765083e6cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/ingest.js:47"}, "properties": {"repobilityId": "ad77ad0f89db04ca", "scanner": "scanner-primary", "fingerprint": "6a001d765083e6cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-074c9306544a00da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/build-app.js:272"}, "properties": {"repobilityId": "7aa5804c29dd7c7c", "scanner": "scanner-primary", "fingerprint": "074c9306544a00da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b011ecb7b489d0d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/scratch/generate-script.js:1159"}, "properties": {"repobilityId": "b9b79f72b3da0bc3", "scanner": "scanner-primary", "fingerprint": "b011ecb7b489d0d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7366c74520e714e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/combine.js:124"}, "properties": {"repobilityId": "07c7952c6db35226", "scanner": "scanner-primary", "fingerprint": "c7366c74520e714e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-860b29e545173a1d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/analyze-video.js:89"}, "properties": {"repobilityId": "10c08b08a0025b7f", "scanner": "scanner-primary", "fingerprint": "860b29e545173a1d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a1f2761e5ecf70e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/segment.js:148"}, "properties": {"repobilityId": "68066d0b831ee123", "scanner": "scanner-primary", "fingerprint": "6a1f2761e5ecf70e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4bc92cd5a757611", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/enhance-script.js:91"}, "properties": {"repobilityId": "dbd10e7a6a78153b", "scanner": "scanner-primary", "fingerprint": "e4bc92cd5a757611", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47da4c84bd8ffee9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scratch/enhance/overlay-plan.js:143"}, "properties": {"repobilityId": "fbc916a608bdf647", "scanner": "scanner-primary", "fingerprint": "47da4c84bd8ffee9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4c97cee42af21eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/prefetch-mcp-packages.js:63"}, "properties": {"repobilityId": "488522daa7167a28", "scanner": "scanner-primary", "fingerprint": "d4c97cee42af21eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12701bb86f484869", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup/test-vertex-auth.js:35"}, "properties": {"repobilityId": "73b5d444ec014892", "scanner": "scanner-primary", "fingerprint": "12701bb86f484869", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-503e70baf55fb64f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 eval-recorder/server.js:39"}, "properties": {"repobilityId": "843366207f533ae7", "scanner": "scanner-primary", "fingerprint": "503e70baf55fb64f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-469bcd1fb1c00427", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in package.json:30"}, "properties": {"repobilityId": "40fa5506c1a3b684", "scanner": "scanner-primary", "fingerprint": "469bcd1fb1c00427", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-826e20bff2376f48", "level": "error", "message": {"text": "Possible secret in scripts/test-plaid-link-remember-me.js"}, "properties": {"repobilityId": "d2db82c16ae54e53", "scanner": "scanner-primary", "fingerprint": "826e20bff2376f48", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-plaid-link-remember-me.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-672b6759f9f4f85e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/test-plaid-link-record.js:260"}, "properties": {"repobilityId": "802ea8891c0a0254", "scanner": "scanner-primary", "fingerprint": "672b6759f9f4f85e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-plaid-link-record.js"}, "region": {"startLine": 260}}}]}, {"ruleId": "scanner-0161b01f018259b5", "level": "error", "message": {"text": "Possible secret in scripts/record.js"}, "properties": {"repobilityId": "c10212269253bcf9", "scanner": "scanner-primary", "fingerprint": "0161b01f018259b5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/record.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-604120cb500efb78", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-run-sync.mjs:19"}, "properties": {"repobilityId": "8570f742ce9db7a3", "scanner": "scanner-primary", "fingerprint": "604120cb500efb78", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-run-sync.mjs"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-388c12763418db0b", "level": "error", "message": {"text": "Possible secret in scripts/test-plaid-link.js"}, "properties": {"repobilityId": "bad8243167de7975", "scanner": "scanner-primary", "fingerprint": "388c12763418db0b", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-plaid-link.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-e049fd26b1c4556c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/test-plaid-link.js:121"}, "properties": {"repobilityId": "a69197014fa20f60", "scanner": "scanner-primary", "fingerprint": "e049fd26b1c4556c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-plaid-link.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-cd486debcf5dadd4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/analyze.js:15"}, "properties": {"repobilityId": "aa3c3316f34f16dc", "scanner": "scanner-primary", "fingerprint": "cd486debcf5dadd4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-a59bf4e99703681b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/start-eval-recorder.js:19"}, "properties": {"repobilityId": "3c265d4f70acdd41", "scanner": "scanner-primary", "fingerprint": "a59bf4e99703681b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/start-eval-recorder.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-83304fd243a58be1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/resync-audio.js:25"}, "properties": {"repobilityId": "0e327ce64128af81", "scanner": "scanner-primary", "fingerprint": "83304fd243a58be1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/resync-audio.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e52588e585519db2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/batch-rerun-pipeline.js:14"}, "properties": {"repobilityId": "76f03c5bd99b2fab", "scanner": "scanner-primary", "fingerprint": "e52588e585519db2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/batch-rerun-pipeline.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-23bf6eb903bf60b8", "level": "error", "message": {"text": "Possible secret in scripts/test-smart-plaid-agent.js"}, "properties": {"repobilityId": "6ac21ba7fd8f1f77", "scanner": "scanner-primary", "fingerprint": "23bf6eb903bf60b8", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-smart-plaid-agent.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-7e66cb58fd1d74f3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/test-smart-plaid-agent.js:99"}, "properties": {"repobilityId": "931e352a4a4adaf7", "scanner": "scanner-primary", "fingerprint": "7e66cb58fd1d74f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-smart-plaid-agent.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-3bb1f2d893512e90", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in scripts/sync-audio.js:112"}, "properties": {"repobilityId": "833b4dd0902fa73f", "scanner": "scanner-primary", "fingerprint": "3bb1f2d893512e90", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sync-audio.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-72191b0f5da0cfa5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sync-audio.js:26"}, "properties": {"repobilityId": "61fefc2b84f2bfbc", "scanner": "scanner-primary", "fingerprint": "72191b0f5da0cfa5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sync-audio.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-b00e92d5a46f8f7b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/generate-voiceover.js:19"}, "properties": {"repobilityId": "7fe742677b3a173e", "scanner": "scanner-primary", "fingerprint": "b00e92d5a46f8f7b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-voiceover.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-058929c0046e9278", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/embed-sync.js:32"}, "properties": {"repobilityId": "a5697261e7bc61d0", "scanner": "scanner-primary", "fingerprint": "058929c0046e9278", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/embed-sync.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-2121e5eec820af3c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/post-process-recording.js:34"}, "properties": {"repobilityId": "fb84a2655e2707ea", "scanner": "scanner-primary", "fingerprint": "2121e5eec820af3c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/post-process-recording.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-3a89c77e39a9d97f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/batch-redo-slides-showcase.js:13"}, "properties": {"repobilityId": "491f380fa07ab67e", "scanner": "scanner-primary", "fingerprint": "3a89c77e39a9d97f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/batch-redo-slides-showcase.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-14364d69de1551b7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dashboard/server.js:27"}, "properties": {"repobilityId": "4ca8a7a57b0a33a6", "scanner": "scanner-primary", "fingerprint": "14364d69de1551b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/server.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-658139a4348b499e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/dashboard/server.js:934"}, "properties": {"repobilityId": "b3fd14f2e3848ed0", "scanner": "scanner-primary", "fingerprint": "658139a4348b499e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/server.js"}, "region": {"startLine": 934}}}]}, {"ruleId": "scanner-ebd1803c7efabece", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/dashboard.js:87"}, "properties": {"repobilityId": "476defa8577ed030", "scanner": "scanner-primary", "fingerprint": "ebd1803c7efabece", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/public/dashboard.js"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-3b93572c845d9173", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/ai-overlay.js:445"}, "properties": {"repobilityId": "603f0ad775716fa6", "scanner": "scanner-primary", "fingerprint": "3b93572c845d9173", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/public/ai-overlay.js"}, "region": {"startLine": 445}}}]}, {"ruleId": "scanner-c82717127980ebd1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/timeline.html:958"}, "properties": {"repobilityId": "979360f59d962364", "scanner": "scanner-primary", "fingerprint": "c82717127980ebd1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/public/timeline.html"}, "region": {"startLine": 958}}}]}, {"ruleId": "scanner-2d9d8e495f371df8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/dashboard/public/prompt-viewer.html:289"}, "properties": {"repobilityId": "aabafd4b6b9b8561", "scanner": "scanner-primary", "fingerprint": "2d9d8e495f371df8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dashboard/public/prompt-viewer.html"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-ae4bf6f6048502d5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/touchup.js:38"}, "properties": {"repobilityId": "454bc7147e720976", "scanner": "scanner-primary", "fingerprint": "ae4bf6f6048502d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/touchup.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-10079251c7e523cd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/mcp-client.js:17"}, "properties": {"repobilityId": "6d6ba709fd5aae16", "scanner": "scanner-primary", "fingerprint": "10079251c7e523cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/mcp-client.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-89d550d163b3501d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/analyze-recording-mm.js:30"}, "properties": {"repobilityId": "ea84a2cc27a4c459", "scanner": "scanner-primary", "fingerprint": "89d550d163b3501d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/analyze-recording-mm.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-1d3ece12047a0eef", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/manual-record.js:25"}, "properties": {"repobilityId": "a10ec5119233abe2", "scanner": "scanner-primary", "fingerprint": "1d3ece12047a0eef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/manual-record.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-7b48b57cd1911e6a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/manual-record.js:244"}, "properties": {"repobilityId": "3ef749a1c2cc3fd6", "scanner": "scanner-primary", "fingerprint": "7b48b57cd1911e6a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/manual-record.js"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-1a47cbbb7f20f04f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/pipeline-watchdog.js:24"}, "properties": {"repobilityId": "3e14dfc7845f1bf1", "scanner": "scanner-primary", "fingerprint": "1a47cbbb7f20f04f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/pipeline-watchdog.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-b655d8f38d139647", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/render-moviepy.js:44"}, "properties": {"repobilityId": "3fe84bee568a7dba", "scanner": "scanner-primary", "fingerprint": "b655d8f38d139647", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/render-moviepy.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-e6296e73795df08e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/debug-plaid-link.js:27"}, "properties": {"repobilityId": "78ff67210a4ab4cf", "scanner": "scanner-primary", "fingerprint": "e6296e73795df08e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/debug-plaid-link.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-5141646a1596b403", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/debug-plaid-link.js:206"}, "properties": {"repobilityId": "627e11873cce58f8", "scanner": "scanner-primary", "fingerprint": "5141646a1596b403", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/debug-plaid-link.js"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-c27bc470857ced68", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/debug-plaid-link.js:392"}, "properties": {"repobilityId": "e95ec5a2880e6513", "scanner": "scanner-primary", "fingerprint": "c27bc470857ced68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/debug-plaid-link.js"}, "region": {"startLine": 392}}}]}, {"ruleId": "scanner-717c6ced1e786b11", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/orchestrator.js:49"}, "properties": {"repobilityId": "f4905210fe005158", "scanner": "scanner-primary", "fingerprint": "717c6ced1e786b11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/orchestrator.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-21573dc80e7453c9", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in scripts/scratch/utils/plaid-recipe-executor.js:199"}, "properties": {"repobilityId": "8586c5f0c3ca68af", "scanner": "scanner-primary", "fingerprint": "21573dc80e7453c9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-recipe-executor.js"}, "region": {"startLine": 199}}}]}, {"ruleId": "scanner-6a5eeee86545cace", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/utils/mcp-clients.js:12"}, "properties": {"repobilityId": "3a37938164fd26d0", "scanner": "scanner-primary", "fingerprint": "6a5eeee86545cace", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/mcp-clients.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-99f836b2fda2dca8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/utils/identity.js:25"}, "properties": {"repobilityId": "e056407a9c374afe", "scanner": "scanner-primary", "fingerprint": "99f836b2fda2dca8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/identity.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-90be2b8724df6b93", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/scratch/utils/app-server.js:244"}, "properties": {"repobilityId": "c3a9a83c5c9c6dd4", "scanner": "scanner-primary", "fingerprint": "90be2b8724df6b93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/app-server.js"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 767}}}]}, {"ruleId": "scanner-2c18519379a57607", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/plaid-browser-agent.js"}, "properties": {"repobilityId": "72148c868d9cd891", "scanner": "scanner-primary", "fingerprint": "2c18519379a57607", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/plaid-browser-agent.js"}, "region": {"startLine": 947}}}]}, {"ruleId": "scanner-dfe9fe3db4b39d85", "level": "error", "message": {"text": "Possible secret in scripts/scratch/utils/smart-plaid-agent.js"}, "properties": {"repobilityId": "27a1e404d7e22b16", "scanner": "scanner-primary", "fingerprint": "dfe9fe3db4b39d85", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/utils/smart-plaid-agent.js"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-202313463ebe9d90", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/qa-review.js:30"}, "properties": {"repobilityId": "24e6b0e7ff3b675e", "scanner": "scanner-primary", "fingerprint": "202313463ebe9d90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/qa-review.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-856bbb0329f0b8da", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/figma-review.js:43"}, "properties": {"repobilityId": "c1542acc43346fe6", "scanner": "scanner-primary", "fingerprint": "856bbb0329f0b8da", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/figma-review.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-f6f7abec68ca2d27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/record-local.js:29"}, "properties": {"repobilityId": "6fa192b7c98b4535", "scanner": "scanner-primary", "fingerprint": "f6f7abec68ca2d27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/record-local.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-bc49063a2c2e12a5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/brand-clone.js:7"}, "properties": {"repobilityId": "74f690a5a52f65ae", "scanner": "scanner-primary", "fingerprint": "bc49063a2c2e12a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/brand-clone.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-dc2b36ecaa27c094", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/scene-match-check.js:37"}, "properties": {"repobilityId": "82fdc3ec71191a25", "scanner": "scanner-primary", "fingerprint": "dc2b36ecaa27c094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/scene-match-check.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-e22f7f28550a6bb8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/build-qa.js:3603"}, "properties": {"repobilityId": "ca340d1f1dd78dd4", "scanner": "scanner-primary", "fingerprint": "e22f7f28550a6bb8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/build-qa.js"}, "region": {"startLine": 3603}}}]}, {"ruleId": "scanner-ed898121eb1cd545", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/post-panels.js:326"}, "properties": {"repobilityId": "ec211cd7daaf0d4f", "scanner": "scanner-primary", "fingerprint": "ed898121eb1cd545", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/post-panels.js"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-c4c0253f61d2f633", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/mcp-video-edit.js:40"}, "properties": {"repobilityId": "aabe1fc504347c1a", "scanner": "scanner-primary", "fingerprint": "c4c0253f61d2f633", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/mcp-video-edit.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-f07e186b89ce840b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/gemini-narration-qa.js:17"}, "properties": {"repobilityId": "5aef4c596863b21d", "scanner": "scanner-primary", "fingerprint": "f07e186b89ce840b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/gemini-narration-qa.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-ec46e05bf91d69c5", "level": "error", "message": {"text": "Possible secret in scripts/scratch/scratch/record-plaid-manual.js"}, "properties": {"repobilityId": "73159eeca1555d21", "scanner": "scanner-primary", "fingerprint": "ec46e05bf91d69c5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/record-plaid-manual.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-ec46e05bf91d69c5", "level": "error", "message": {"text": "Possible secret in scripts/scratch/scratch/record-plaid-manual.js"}, "properties": {"repobilityId": "73159eeca1555d21", "scanner": "scanner-primary", "fingerprint": "ec46e05bf91d69c5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/record-plaid-manual.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-cadd6a61fd76c8f7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scratch/scratch/record-plaid-manual.js:266"}, "properties": {"repobilityId": "ccc1f05c71e00d5a", "scanner": "scanner-primary", "fingerprint": "cadd6a61fd76c8f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/record-plaid-manual.js"}, "region": {"startLine": 266}}}]}, {"ruleId": "scanner-2b4f8971002e2bd7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/scratch/ingest.js:21"}, "properties": {"repobilityId": "22e02b68b7890dd8", "scanner": "scanner-primary", "fingerprint": "2b4f8971002e2bd7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/ingest.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-664d5063f5a42f91", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in scripts/scratch/scratch/build-app.js:1705"}, "properties": {"repobilityId": "b34e271e903c03b5", "scanner": "scanner-primary", "fingerprint": "664d5063f5a42f91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/scratch/build-app.js"}, "region": {"startLine": 1705}}}]}, {"ruleId": "scanner-3bad8eb999e0931d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/combine.js:35"}, "properties": {"repobilityId": "84b2663e262f6fe3", "scanner": "scanner-primary", "fingerprint": "3bad8eb999e0931d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/enhance/combine.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-d4f932a4f446d779", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scratch/enhance/analyze-video.js:25"}, "properties": {"repobilityId": "5823530a77ffe914", "scanner": "scanner-primary", "fingerprint": "d4f932a4f446d779", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scratch/enhance/analyze-video.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-f1e19784d37fd62b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/setup/prefetch-mcp-packages.js:14"}, "properties": {"repobilityId": "60c300978960c5c3", "scanner": "scanner-primary", "fingerprint": "f1e19784d37fd62b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/prefetch-mcp-packages.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-1ed8ca7f88dba447", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assetlib/plaid-link.js:28"}, "properties": {"repobilityId": "6c7055539ea22b30", "scanner": "scanner-primary", "fingerprint": "1ed8ca7f88dba447", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assetlib/plaid-link.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-9ba8fd3a27978fbd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in tmp-showcase/index.html:1189"}, "properties": {"repobilityId": "d539db1590def274", "scanner": "scanner-primary", "fingerprint": "9ba8fd3a27978fbd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tmp-showcase/index.html"}, "region": {"startLine": 1189}}}]}, {"ruleId": "scanner-1e32fb46eeaedf28", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in brand slide design/deck-stage.js:853"}, "properties": {"repobilityId": "b050e8d64185a5dc", "scanner": "scanner-primary", "fingerprint": "1e32fb46eeaedf28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brand slide design/deck-stage.js"}, "region": {"startLine": 853}}}]}, {"ruleId": "scanner-f76ef60fe109ddab", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in eval-recorder/server.js:15"}, "properties": {"repobilityId": "81d91e5b20991254", "scanner": "scanner-primary", "fingerprint": "f76ef60fe109ddab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "eval-recorder/server.js"}, "region": {"startLine": 15}}}]}, {"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-7db87550ff2b33e0", "level": "note", "message": {"text": "Very large file: scripts/test-plaid-link.js (1243 lines)"}, "properties": {"repobilityId": "ef0b86016d06696e", "scanner": "scanner-primary", "fingerprint": "7db87550ff2b33e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8b4df5e11d31afe9", "level": "note", "message": {"text": "Very large file: scripts/dashboard/server.js (6497 lines)"}, "properties": {"repobilityId": "aa4362d5dfd63a32", "scanner": "scanner-primary", "fingerprint": "8b4df5e11d31afe9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a59e90f1920fb582", "level": "note", "message": {"text": "Very large file: scripts/dashboard/public/dashboard.js (5535 lines)"}, "properties": {"repobilityId": "6e6c3ac06ceead86", "scanner": "scanner-primary", "fingerprint": "a59e90f1920fb582", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fea914039af17f0e", "level": "note", "message": {"text": "Very large file: scripts/scratch/research.js (1922 lines)"}, "properties": {"repobilityId": "342df0f78760633a", "scanner": "scanner-primary", "fingerprint": "fea914039af17f0e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-52852404e4cd26ed", "level": "note", "message": {"text": "Very large file: scripts/scratch/orchestrator.js (4878 lines)"}, "properties": {"repobilityId": "2b5035ed797b40a6", "scanner": "scanner-primary", "fingerprint": "52852404e4cd26ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a36a335897dc420", "level": "note", "message": {"text": "Very large file: scripts/scratch/utils/prompt-templates.js (3407 lines)"}, "properties": {"repobilityId": "448e8dab58ae7b5e", "scanner": "scanner-primary", "fingerprint": "7a36a335897dc420", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4248b1c0d39200b0", "level": "note", "message": {"text": "Very large file: scripts/scratch/utils/plaid-backend.js (1349 lines)"}, "properties": {"repobilityId": "1d14efdb98d35b8f", "scanner": "scanner-primary", "fingerprint": "4248b1c0d39200b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-743dfe42a2e08288", "level": "note", "message": {"text": "Very large file: scripts/scratch/utils/qa-patch-library.js (1180 lines)"}, "properties": {"repobilityId": "5a77d8af2690fffd", "scanner": "scanner-primary", "fingerprint": "743dfe42a2e08288", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b393bec3f167e7a9", "level": "note", "message": {"text": "Very large file: scripts/scratch/scratch/record-local.js (3216 lines)"}, "properties": {"repobilityId": "c311032028422b3c", "scanner": "scanner-primary", "fingerprint": "b393bec3f167e7a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30d0482a8992c2d6", "level": "note", "message": {"text": "Very large file: scripts/scratch/scratch/build-qa.js (5428 lines)"}, "properties": {"repobilityId": "32859a2a6aa75b09", "scanner": "scanner-primary", "fingerprint": "30d0482a8992c2d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-245bb9b82978afab", "level": "note", "message": {"text": "Very large file: scripts/scratch/scratch/post-panels.js (1864 lines)"}, "properties": {"repobilityId": "cb31ad08fa7f638c", "scanner": "scanner-primary", "fingerprint": "245bb9b82978afab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8bc26b37d0375ac", "level": "note", "message": {"text": "Very large file: scripts/scratch/scratch/build-app.js (3990 lines)"}, "properties": {"repobilityId": "f430678358d2b8de", "scanner": "scanner-primary", "fingerprint": "c8bc26b37d0375ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa86e320626c56c4", "level": "note", "message": {"text": "Very large file: scripts/scratch/scratch/generate-script.js (1763 lines)"}, "properties": {"repobilityId": "f43061cbc56729ec", "scanner": "scanner-primary", "fingerprint": "aa86e320626c56c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6f08b2a8d1638edd", "level": "note", "message": {"text": "Very large file: brand slide design/deck-stage.js (1748 lines)"}, "properties": {"repobilityId": "71c28fa5e8463759", "scanner": "scanner-primary", "fingerprint": "6f08b2a8d1638edd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "b6ce318a3449a981", "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": "65ce5b9aad81ecfa", "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": "028915f9511683a8", "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": "3c2375c6d44192da", "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": "bf289b5b183fa539", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "4cf1055cb6d616cf", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "e1ba3381988b5a05", "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": "65da7dd05635366f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5adb044949cf0dc7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/advanced-prompting-techniques/SKILL.md"}, "properties": {"repobilityId": "1e6047f41666aca9", "scanner": "scanner-primary", "fingerprint": "5adb044949cf0dc7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/advanced-prompting-techniques/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4cc96574dbc3a966", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: .claude/skills/plaid-layer-idv-onboarding/SKILL.md"}, "properties": {"repobilityId": "3ce073911bb4162f", "scanner": "scanner-primary", "fingerprint": "4cc96574dbc3a966", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/plaid-layer-idv-onboarding/SKILL.md"}, "region": {"startLine": 287}}}]}, {"ruleId": "scanner-c92f814deca924bd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/plaid-integration-bundle/SKILL.md"}, "properties": {"repobilityId": "d25030530988f7a8", "scanner": "scanner-primary", "fingerprint": "c92f814deca924bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/plaid-integration-bundle/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e05f1d480c722ea", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/audio-sync-mastery/SKILL.md"}, "properties": {"repobilityId": "29c0c188b17a83dc", "scanner": "scanner-primary", "fingerprint": "1e05f1d480c722ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/audio-sync-mastery/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ff6b25f1b10e906f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .cursor/rules/plaid-workhorse-slides.mdc"}, "properties": {"repobilityId": "52065d4d78baff32", "scanner": "scanner-primary", "fingerprint": "ff6b25f1b10e906f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "cursor_rule"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".cursor/rules/plaid-workhorse-slides.mdc"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1184605438665ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/slide-contract-cascade.test.js:98"}, "properties": {"repobilityId": "af73ef712abfb7d4", "scanner": "scanner-primary", "fingerprint": "e1184605438665ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b37e9d0552ff3cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/prompt-fidelity-integration.test.js:2"}, "properties": {"repobilityId": "e9c5895fbf91d6dd", "scanner": "scanner-primary", "fingerprint": "2b37e9d0552ff3cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b74dfe80d2769694", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/prompt-templates.test.js:101"}, "properties": {"repobilityId": "c57970cb0c2a508d", "scanner": "scanner-primary", "fingerprint": "b74dfe80d2769694", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb384104066290b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/link-token-create-config.test.js:11"}, "properties": {"repobilityId": "3b9e561764a515b9", "scanner": "scanner-primary", "fingerprint": "eb384104066290b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b485b0b7af6f7116", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/dotenv-loader.test.js:76"}, "properties": {"repobilityId": "e5e1ceb88987b866", "scanner": "scanner-primary", "fingerprint": "b485b0b7af6f7116", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a0275974214a5bb", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/prompt-scope.test.js:58"}, "properties": {"repobilityId": "45ac4ee8542f4a2e", "scanner": "scanner-primary", "fingerprint": "4a0275974214a5bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1d9c530a5c927a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/build-qa.test.js:153"}, "properties": {"repobilityId": "52dab82d3163b56e", "scanner": "scanner-primary", "fingerprint": "f1d9c530a5c927a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a67c85970e931fec", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/auto-gap.js:59"}, "properties": {"repobilityId": "c330ac46c369f23c", "scanner": "scanner-primary", "fingerprint": "a67c85970e931fec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b93fe36341e0bea", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-plaid-link-record.js:453"}, "properties": {"repobilityId": "0f44ddb92b70cd6d", "scanner": "scanner-primary", "fingerprint": "2b93fe36341e0bea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c72a28f8a2bc6225", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link-record.js:249"}, "properties": {"repobilityId": "2063f32d3969a101", "scanner": "scanner-primary", "fingerprint": "c72a28f8a2bc6225", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b60ed3cf15c33f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/plaid-link-capture.js:76"}, "properties": {"repobilityId": "a2906f1278226983", "scanner": "scanner-primary", "fingerprint": "0b60ed3cf15c33f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7fcd0376182baf3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/validate-narration-sync.js:188"}, "properties": {"repobilityId": "abe7ad19452c2dce", "scanner": "scanner-primary", "fingerprint": "7fcd0376182baf3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78ef5ffaae88a777", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/check-run-sync.mjs:7"}, "properties": {"repobilityId": "059bc72b97d37c86", "scanner": "scanner-primary", "fingerprint": "78ef5ffaae88a777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b079c5f6619b493", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-plaid-link.js:329"}, "properties": {"repobilityId": "5cac608bfbaf140f", "scanner": "scanner-primary", "fingerprint": "5b079c5f6619b493", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ee56e7d837cea0f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/sync-map-utils.js:37"}, "properties": {"repobilityId": "1fe325f16e34398c", "scanner": "scanner-primary", "fingerprint": "4ee56e7d837cea0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99041b4d448c3ec9", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/batch-rerun-pipeline.js:134"}, "properties": {"repobilityId": "dbf236e9e3fd88d0", "scanner": "scanner-primary", "fingerprint": "99041b4d448c3ec9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65a43ca807ce54c0", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-voiceover.js:25"}, "properties": {"repobilityId": "cb45138c4039cf34", "scanner": "scanner-primary", "fingerprint": "65a43ca807ce54c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab677d0829a41d08", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/generate-voiceover.js:40"}, "properties": {"repobilityId": "41c782fd89bde8ba", "scanner": "scanner-primary", "fingerprint": "ab677d0829a41d08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2762cf9c065a19d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-voiceover.js:373"}, "properties": {"repobilityId": "f1021d25fce824b9", "scanner": "scanner-primary", "fingerprint": "d2762cf9c065a19d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6486b11ee8fe6334", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/embed-sync.js:144"}, "properties": {"repobilityId": "37933bf026f62511", "scanner": "scanner-primary", "fingerprint": "6486b11ee8fe6334", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1618b213727b55b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/test-plaid-layer.js:503"}, "properties": {"repobilityId": "787b17146f36e8d4", "scanner": "scanner-primary", "fingerprint": "1618b213727b55b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffe0e971d411e6cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/post-process-recording.js:56"}, "properties": {"repobilityId": "bf45c014ef674ad3", "scanner": "scanner-primary", "fingerprint": "ffe0e971d411e6cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8364d6c3e29f00e9", "level": "note", "message": {"text": "Legacy-named symbol `respondApprovalDeprecated` in scripts/dashboard/server.js:4026"}, "properties": {"repobilityId": "018d403c59ddb495", "scanner": "scanner-primary", "fingerprint": "8364d6c3e29f00e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3430b026bab3daf2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dashboard/server.js:240"}, "properties": {"repobilityId": "8e05589e07d5baa2", "scanner": "scanner-primary", "fingerprint": "3430b026bab3daf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0c02cdbc34ffc91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/server.js:3854"}, "properties": {"repobilityId": "f6da9c3e1708c9f7", "scanner": "scanner-primary", "fingerprint": "a0c02cdbc34ffc91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2cebf1358eaa0fac", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dashboard/utils/insert-slide-html.js:194"}, "properties": {"repobilityId": "d621515bd772a631", "scanner": "scanner-primary", "fingerprint": "2cebf1358eaa0fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ed88c65e87549d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dashboard/utils/slide-thumbnail.js:31"}, "properties": {"repobilityId": "b17c97bb6959f383", "scanner": "scanner-primary", "fingerprint": "7ed88c65e87549d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0160363661a6fce3", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/dashboard/public/dashboard.js:2069"}, "properties": {"repobilityId": "8b7599ee9053c9b5", "scanner": "scanner-primary", "fingerprint": "0160363661a6fce3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-481daae7f99f1e32", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dashboard/public/ai-overlay.js:40"}, "properties": {"repobilityId": "86636d7c9ab7e2dc", "scanner": "scanner-primary", "fingerprint": "481daae7f99f1e32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e114752fd1fec37", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dashboard/public/ai-overlay.js:771"}, "properties": {"repobilityId": "cbf8999e6ea493ea", "scanner": "scanner-primary", "fingerprint": "6e114752fd1fec37", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31d0839af0233b1c", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scratch/research.js:267"}, "properties": {"repobilityId": "90a0be5e6996ec2d", "scanner": "scanner-primary", "fingerprint": "31d0839af0233b1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e735da64c52b8768", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/render-moviepy.js:173"}, "properties": {"repobilityId": "45fbfcef7e4648bc", "scanner": "scanner-primary", "fingerprint": "e735da64c52b8768", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-346b0840fed77f6c", "level": "note", "message": {"text": "Legacy-named symbol `multilingual_v2` in scripts/scratch/orchestrator.js:3849"}, "properties": {"repobilityId": "67d68cab00dde074", "scanner": "scanner-primary", "fingerprint": "346b0840fed77f6c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b2bfcfea03be89bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/orchestrator.js:880"}, "properties": {"repobilityId": "8847f0d5e75eff36", "scanner": "scanner-primary", "fingerprint": "b2bfcfea03be89bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-536cb43c83003d12", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-router.js:21"}, "properties": {"repobilityId": "e83b9042721c2618", "scanner": "scanner-primary", "fingerprint": "536cb43c83003d12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7bc85d1378f2a81", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/vertex-embed.js:44"}, "properties": {"repobilityId": "cd557cba92706326", "scanner": "scanner-primary", "fingerprint": "e7bc85d1378f2a81", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0981a612ae497cf3", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scratch/utils/brand-fidelity.js:64"}, "properties": {"repobilityId": "8b70a71d99eb3e1a", "scanner": "scanner-primary", "fingerprint": "0981a612ae497cf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-804b2db787edf510", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/stage-state.js:131"}, "properties": {"repobilityId": "1c6b27ac105df2fc", "scanner": "scanner-primary", "fingerprint": "804b2db787edf510", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4e5c0f19bf4fbaf", "level": "note", "message": {"text": "Legacy-named symbol `audit_copy` in scripts/scratch/utils/product-profiles.js:102"}, "properties": {"repobilityId": "4a234811da856527", "scanner": "scanner-primary", "fingerprint": "d4e5c0f19bf4fbaf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4781901cbe5aeb00", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/slide-css-scoper.js:202"}, "properties": {"repobilityId": "5945cea05aff9c7b", "scanner": "scanner-primary", "fingerprint": "4781901cbe5aeb00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8202e47581bc3dcd", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/prompt-fidelity.js:103"}, "properties": {"repobilityId": "6d0df0e9c62be1d7", "scanner": "scanner-primary", "fingerprint": "8202e47581bc3dcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da5092b6c3e59591", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scratch/utils/qa-touchup.js:422"}, "properties": {"repobilityId": "27c177dd3004810a", "scanner": "scanner-primary", "fingerprint": "da5092b6c3e59591", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63e6b5eab90bfeee", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/prompt-templates.js:501"}, "properties": {"repobilityId": "b3ff9daa1d9f228f", "scanner": "scanner-primary", "fingerprint": "63e6b5eab90bfeee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bd5f74b436924c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/prompt-templates.js:1910"}, "properties": {"repobilityId": "7544aec52b54d371", "scanner": "scanner-primary", "fingerprint": "5bd5f74b436924c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7c25d240e02b3ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/check-publish-safety.js:18"}, "properties": {"repobilityId": "9ee66fdc6c68931f", "scanner": "scanner-primary", "fingerprint": "b7c25d240e02b3ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c4999d3a44ac828", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/plaid-backend.js:166"}, "properties": {"repobilityId": "58d4fdc5d5444005", "scanner": "scanner-primary", "fingerprint": "0c4999d3a44ac828", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3744819347300bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/plaid-backend.js:4"}, "properties": {"repobilityId": "59decdce2b7b7465", "scanner": "scanner-primary", "fingerprint": "b3744819347300bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c1b16bed5118c2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/anthropic-models.js:43"}, "properties": {"repobilityId": "f2abf0b3e08a608e", "scanner": "scanner-primary", "fingerprint": "8c1b16bed5118c2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6678d9120c9e7d3f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/qa-patch-library.js:32"}, "properties": {"repobilityId": "466e1ff0c49588e5", "scanner": "scanner-primary", "fingerprint": "6678d9120c9e7d3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e412b013be9ff2b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/qa-patch-library.js:119"}, "properties": {"repobilityId": "714124d4b5523df8", "scanner": "scanner-primary", "fingerprint": "e412b013be9ff2b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5577b570d8991e0f", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/prompt-scope.js:8"}, "properties": {"repobilityId": "43a92b6209eb003d", "scanner": "scanner-primary", "fingerprint": "5577b570d8991e0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04c833c5f0b4707d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/slide-template-registry.js:61"}, "properties": {"repobilityId": "3e2dc974aa66be82", "scanner": "scanner-primary", "fingerprint": "04c833c5f0b4707d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be6e1fdabf7ce5e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/link-token-create-config.js:173"}, "properties": {"repobilityId": "35a453d3b053d45c", "scanner": "scanner-primary", "fingerprint": "be6e1fdabf7ce5e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2a386824a5fcb0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/utils/validate-pipeline-env.js:33"}, "properties": {"repobilityId": "24921dce4f660b47", "scanner": "scanner-primary", "fingerprint": "d2a386824a5fcb0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b5e38a44db1883e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/slide-mint-cap.js:49"}, "properties": {"repobilityId": "ef5b609a6df1ced2", "scanner": "scanner-primary", "fingerprint": "6b5e38a44db1883e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8845a90b97b31895", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/utils/product-knowledge-coverage.js:301"}, "properties": {"repobilityId": "6301fba6181e3dfc", "scanner": "scanner-primary", "fingerprint": "8845a90b97b31895", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba778bfecc7da982", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/utils/run-io.js:146"}, "properties": {"repobilityId": "b2a4874e6883d850", "scanner": "scanner-primary", "fingerprint": "ba778bfecc7da982", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82c6fd7d367a9518", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/utils/app-server.js:296"}, "properties": {"repobilityId": "050d78de930b3bc1", "scanner": "scanner-primary", "fingerprint": "82c6fd7d367a9518", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48d4b4dca7f93c63", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/qa-review.js:57"}, "properties": {"repobilityId": "560a512952e1e1d9", "scanner": "scanner-primary", "fingerprint": "48d4b4dca7f93c63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8a33cd84c5193c5", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/brand-extract.js:98"}, "properties": {"repobilityId": "507ea89c42a25a38", "scanner": "scanner-primary", "fingerprint": "d8a33cd84c5193c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-300ffaaf2654bcea", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/story-echo-check.js:52"}, "properties": {"repobilityId": "a602430ff6c4954d", "scanner": "scanner-primary", "fingerprint": "300ffaaf2654bcea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a525aeddfab7322", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/record-local.js:114"}, "properties": {"repobilityId": "5704e6e39a8ce054", "scanner": "scanner-primary", "fingerprint": "6a525aeddfab7322", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6259c75bccd5df83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-local.js:2444"}, "properties": {"repobilityId": "3242f614c7f503e7", "scanner": "scanner-primary", "fingerprint": "6259c75bccd5df83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f622f8f0c07498c4", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/plaid-link-qa.js:26"}, "properties": {"repobilityId": "f55fbe638b8667d2", "scanner": "scanner-primary", "fingerprint": "f622f8f0c07498c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e7001d7ff918e8b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/post-slides.js:75"}, "properties": {"repobilityId": "31abb6b513d0c78b", "scanner": "scanner-primary", "fingerprint": "8e7001d7ff918e8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a56b8e3ca22b4c5f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/scene-match-check.js:157"}, "properties": {"repobilityId": "ec33f1184b650579", "scanner": "scanner-primary", "fingerprint": "a56b8e3ca22b4c5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f34023f29e81d68", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/build-qa.js:228"}, "properties": {"repobilityId": "d1c88ba9c2e82630", "scanner": "scanner-primary", "fingerprint": "2f34023f29e81d68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf3593edd24e83f9", "level": "note", "message": {"text": "Legacy-named symbol `account_funding_v1` in scripts/scratch/scratch/post-panels.js:554"}, "properties": {"repobilityId": "26fbbf361fc2a6b4", "scanner": "scanner-primary", "fingerprint": "bf3593edd24e83f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9f7eaf6bd1dbad5", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scratch/scratch/post-panels.js:158"}, "properties": {"repobilityId": "492b4ee1b263858c", "scanner": "scanner-primary", "fingerprint": "f9f7eaf6bd1dbad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ea44032c70592a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/slide-fix.js:241"}, "properties": {"repobilityId": "bfcd4439d1929e2f", "scanner": "scanner-primary", "fingerprint": "4ea44032c70592a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00e5c17c832a5e50", "level": "note", "message": {"text": "Legacy-named symbol `multilingual_v2` in scripts/scratch/scratch/measure-sync-debt.js:44"}, "properties": {"repobilityId": "cc2c22d9c143d73d", "scanner": "scanner-primary", "fingerprint": "00e5c17c832a5e50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-210d4c796ee2f08b", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scratch/scratch/measure-sync-debt.js:43"}, "properties": {"repobilityId": "bc65fd3dbbcec7c6", "scanner": "scanner-primary", "fingerprint": "210d4c796ee2f08b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a48dfbfd3e7be5e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/data-realism-check.js:137"}, "properties": {"repobilityId": "5c4cc9cafbf77636", "scanner": "scanner-primary", "fingerprint": "a48dfbfd3e7be5e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e246086c84282752", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scratch/scratch/mcp-video-edit.js:126"}, "properties": {"repobilityId": "ed6c6600e724becb", "scanner": "scanner-primary", "fingerprint": "e246086c84282752", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-681c8b162b478482", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/gemini-narration-qa.js:66"}, "properties": {"repobilityId": "8efaa9f58f1d8fd2", "scanner": "scanner-primary", "fingerprint": "681c8b162b478482", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a204d498a185a48", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/record-plaid-manual.js:93"}, "properties": {"repobilityId": "5016ca8890a8105e", "scanner": "scanner-primary", "fingerprint": "6a204d498a185a48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-adac8f67727e80d7", "level": "note", "message": {"text": "Legacy-named symbol `framesDirLegacy` in scripts/scratch/scratch/build-app.js:2736"}, "properties": {"repobilityId": "accf41573ae30a06", "scanner": "scanner-primary", "fingerprint": "adac8f67727e80d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-53f29111a5b9950c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scratch/scratch/build-app.js:115"}, "properties": {"repobilityId": "018b9aa28f747671", "scanner": "scanner-primary", "fingerprint": "53f29111a5b9950c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cde8de2f3b0828a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/scratch/build-app.js:3850"}, "properties": {"repobilityId": "bdf4b0219aea1e62", "scanner": "scanner-primary", "fingerprint": "cde8de2f3b0828a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a0cea8e4e08764b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scratch/scratch/generate-script.js:277"}, "properties": {"repobilityId": "7809f4eb9d10c38e", "scanner": "scanner-primary", "fingerprint": "1a0cea8e4e08764b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b338c278f12f160b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scratch/enhance/analyze-video.js:224"}, "properties": {"repobilityId": "dfced9f54baf1b3d", "scanner": "scanner-primary", "fingerprint": "b338c278f12f160b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-595f76697e75fe45", "level": "none", "message": {"text": "Commented-code block (5 lines) in remotion/ScratchComposition.jsx:89"}, "properties": {"repobilityId": "99865e2dd0cd7994", "scanner": "scanner-primary", "fingerprint": "595f76697e75fe45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e4a747e5e2fbe04", "level": "none", "message": {"text": "Commented-code block (5 lines) in brand slide design/deck-stage.js:631"}, "properties": {"repobilityId": "154fc0bd4c7f0c9a", "scanner": "scanner-primary", "fingerprint": "7e4a747e5e2fbe04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2b9de76d215015d", "level": "note", "message": {"text": "221 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "3ace2f01637871b5", "scanner": "scanner-primary", "fingerprint": "a2b9de76d215015d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-eb2568f2f50500dc", "level": "error", "message": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}?output_format=${OUTPUT_FORMAT} (scripts/generate-voiceover.js:373)"}, "properties": {"repobilityId": "c846b9643b036fc7", "scanner": "scanner-primary", "fingerprint": "eb2568f2f50500dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c95e530c0ccd60f2", "level": "error", "message": {"text": "Dangling fetch: GET https://api.elevenlabs.io/v1/voices (scripts/dashboard/server.js:3854)"}, "properties": {"repobilityId": "e3b1133877946f7f", "scanner": "scanner-primary", "fingerprint": "c95e530c0ccd60f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b56591ef18611201", "level": "error", "message": {"text": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:290)"}, "properties": {"repobilityId": "c52d2006963f67ec", "scanner": "scanner-primary", "fingerprint": "b56591ef18611201", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2c91a66cd0152fd", "level": "error", "message": {"text": "Dangling fetch: POST /__step-event (scripts/scratch/manual-record.js:302)"}, "properties": {"repobilityId": "ca86a4981d66a533", "scanner": "scanner-primary", "fingerprint": "d2c91a66cd0152fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc8e71dd71f85468", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/scratch/utils/validate-pipeline-env.js:33)"}, "properties": {"repobilityId": "90c2e278ebd35115", "scanner": "scanner-primary", "fingerprint": "dc8e71dd71f85468", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0b158f39cd85b7cc", "level": "note", "message": {"text": "Unused endpoint: USE /api/slide-library"}, "properties": {"repobilityId": "8b5053ee87cf61ed", "scanner": "scanner-primary", "fingerprint": "0b158f39cd85b7cc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f1c12077ee7ef0d2", "level": "note", "message": {"text": "Unused endpoint: USE /static"}, "properties": {"repobilityId": "36a0a286ddc09dd1", "scanner": "scanner-primary", "fingerprint": "f1c12077ee7ef0d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "a1886e12980e2020", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca0ee8c086b37844", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs"}, "properties": {"repobilityId": "17df106fa9a972b1", "scanner": "scanner-primary", "fingerprint": "ca0ee8c086b37844", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99c618c1648a21b2", "level": "note", "message": {"text": "Unused endpoint: GET /api/slide-library"}, "properties": {"repobilityId": "69d1debee0c00082", "scanner": "scanner-primary", "fingerprint": "99c618c1648a21b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6759cc24db0498e", "level": "note", "message": {"text": "Unused endpoint: GET /api/slide-library/slides/:slideId/html"}, "properties": {"repobilityId": "514e6e2f51a1d973", "scanner": "scanner-primary", "fingerprint": "c6759cc24db0498e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b9a0ee55f64485ac", "level": "note", "message": {"text": "Unused endpoint: POST /api/slide-library/upload"}, "properties": {"repobilityId": "6ffb9d35aa3826d5", "scanner": "scanner-primary", "fingerprint": "b9a0ee55f64485ac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fdca8992997fcf2a", "level": "note", "message": {"text": "Unused endpoint: GET /api/slide-library/slides/:slideId/asset"}, "properties": {"repobilityId": "410dc714c6157a33", "scanner": "scanner-primary", "fingerprint": "fdca8992997fcf2a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92509bec069fbcb5", "level": "note", "message": {"text": "Unused endpoint: POST /api/slide-library/slides/:slideId/ai-edit"}, "properties": {"repobilityId": "28d4f9b04ccedeb6", "scanner": "scanner-primary", "fingerprint": "92509bec069fbcb5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b492dc33c9135c50", "level": "note", "message": {"text": "Unused endpoint: POST /api/slide-library/slides/:slideId/rename"}, "properties": {"repobilityId": "56ae70e26843f747", "scanner": "scanner-primary", "fingerprint": "b492dc33c9135c50", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c7b4923429599c3", "level": "note", "message": {"text": "Unused endpoint: POST /api/slide-library/submit"}, "properties": {"repobilityId": "a5924c0b5d8fd8c9", "scanner": "scanner-primary", "fingerprint": "2c7b4923429599c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afc49b2cd1b13417", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/allocate"}, "properties": {"repobilityId": "6464b7752432993b", "scanner": "scanner-primary", "fingerprint": "afc49b2cd1b13417", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d999c292832092e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId"}, "properties": {"repobilityId": "a67588cd69240b6d", "scanner": "scanner-primary", "fingerprint": "d999c292832092e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56a55930e2b26af7", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/script"}, "properties": {"repobilityId": "a8fe0f4dd12dac21", "scanner": "scanner-primary", "fingerprint": "56a55930e2b26af7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c87552d46a84a9c", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/qa"}, "properties": {"repobilityId": "5abdbd059c314ab5", "scanner": "scanner-primary", "fingerprint": "8c87552d46a84a9c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b241f4cda5d39ec", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/audio-sync-status"}, "properties": {"repobilityId": "f7cb7b7e8fa6804a", "scanner": "scanner-primary", "fingerprint": "3b241f4cda5d39ec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cddc0fee5b5fde21", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/frames"}, "properties": {"repobilityId": "3d7575626ed782b8", "scanner": "scanner-primary", "fingerprint": "cddc0fee5b5fde21", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea1044d33b38aca9", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/frames/:filename"}, "properties": {"repobilityId": "e5747f00b4870fa6", "scanner": "scanner-primary", "fingerprint": "ea1044d33b38aca9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1eb69953b3384bc5", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/capture-build-screenshots"}, "properties": {"repobilityId": "8db5a5f36741d6f0", "scanner": "scanner-primary", "fingerprint": "1eb69953b3384bc5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a218828f632082d", "level": "note", "message": {"text": "Unused endpoint: GET /api/files/:runId/*"}, "properties": {"repobilityId": "5354e0b8df1477ab", "scanner": "scanner-primary", "fingerprint": "4a218828f632082d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8e8463d5f636715b", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/download-app-package"}, "properties": {"repobilityId": "112ed046e3792dae", "scanner": "scanner-primary", "fingerprint": "8e8463d5f636715b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7aa4b2518cbbbfa2", "level": "note", "message": {"text": "Unused endpoint: GET /api/config"}, "properties": {"repobilityId": "dda52b98da14d110", "scanner": "scanner-primary", "fingerprint": "7aa4b2518cbbbfa2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1309b6a1617af0a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/config"}, "properties": {"repobilityId": "d2547401a33acf29", "scanner": "scanner-primary", "fingerprint": "1309b6a1617af0a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b6435a23ee501b0e", "level": "note", "message": {"text": "Unused endpoint: GET /api/config/prompt"}, "properties": {"repobilityId": "7e11ffa62f5cba3a", "scanner": "scanner-primary", "fingerprint": "b6435a23ee501b0e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa437c39b68e3e8d", "level": "note", "message": {"text": "Unused endpoint: POST /api/config/prompt"}, "properties": {"repobilityId": "5258f8fee7495810", "scanner": "scanner-primary", "fingerprint": "fa437c39b68e3e8d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3ffb85876e0d3540", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/script"}, "properties": {"repobilityId": "65489099f294780d", "scanner": "scanner-primary", "fingerprint": "3ffb85876e0d3540", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d96ad00cbfb0dbda", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/staleness"}, "properties": {"repobilityId": "403dbda07be64d03", "scanner": "scanner-primary", "fingerprint": "d96ad00cbfb0dbda", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60b1922d8c5de870", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/storyboard-live-preview"}, "properties": {"repobilityId": "29b3f0a9df7875ff", "scanner": "scanner-primary", "fingerprint": "60b1922d8c5de870", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-116ade790312d990", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/sync-map"}, "properties": {"repobilityId": "bee2307c3e94ccce", "scanner": "scanner-primary", "fingerprint": "116ade790312d990", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2fb4deb215b7ae39", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/sync-map-segment"}, "properties": {"repobilityId": "2d33912a2eb012c8", "scanner": "scanner-primary", "fingerprint": "2fb4deb215b7ae39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-02a39f10556e8a66", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/reorder-steps"}, "properties": {"repobilityId": "36f3f98609656549", "scanner": "scanner-primary", "fingerprint": "02a39f10556e8a66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0296119df729567e", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/open-studio"}, "properties": {"repobilityId": "37233a1962724260", "scanner": "scanner-primary", "fingerprint": "0296119df729567e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6ed8275e1b848dc", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/rebuild-props"}, "properties": {"repobilityId": "06db33311c43093c", "scanner": "scanner-primary", "fingerprint": "a6ed8275e1b848dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-61f40d22041a664f", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/studio-status"}, "properties": {"repobilityId": "b45bd89ffcd1f7ea", "scanner": "scanner-primary", "fingerprint": "61f40d22041a664f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d00e44e482bb8ad8", "level": "note", "message": {"text": "Unused endpoint: GET /api/fs/watch"}, "properties": {"repobilityId": "5741d20519d7fb74", "scanner": "scanner-primary", "fingerprint": "d00e44e482bb8ad8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-852ff0a631ba140a", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/narration-rewrite"}, "properties": {"repobilityId": "a80d8f7cf0067da0", "scanner": "scanner-primary", "fingerprint": "852ff0a631ba140a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7046ad2a363332bb", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/brand"}, "properties": {"repobilityId": "ceb091abfe5dc160", "scanner": "scanner-primary", "fingerprint": "7046ad2a363332bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1108404b1158a9c6", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/generate-step"}, "properties": {"repobilityId": "4a042da0a2680f94", "scanner": "scanner-primary", "fingerprint": "1108404b1158a9c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1c4fb6ce8707181", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/insert-step"}, "properties": {"repobilityId": "354f6e85aa61e532", "scanner": "scanner-primary", "fingerprint": "c1c4fb6ce8707181", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e704b689f7817b0", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/insert-library-slide"}, "properties": {"repobilityId": "a2120c8313a14be8", "scanner": "scanner-primary", "fingerprint": "6e704b689f7817b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64eb3849a8d3388e", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/remove-step"}, "properties": {"repobilityId": "6d8914aaaaafdf2d", "scanner": "scanner-primary", "fingerprint": "64eb3849a8d3388e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-885496963c3ace9f", "level": "note", "message": {"text": "Unused endpoint: GET /api/feedback"}, "properties": {"repobilityId": "5c398a2b96cdac4d", "scanner": "scanner-primary", "fingerprint": "885496963c3ace9f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-398f6be5d7b308bc", "level": "note", "message": {"text": "Unused endpoint: POST /api/feedback/export"}, "properties": {"repobilityId": "70bde9a51531dc4b", "scanner": "scanner-primary", "fingerprint": "398f6be5d7b308bc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0704ea5a7652c623", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/timing"}, "properties": {"repobilityId": "6c0297b8422bfab8", "scanner": "scanner-primary", "fingerprint": "0704ea5a7652c623", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6690d67dc5ef4d4f", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/auto-gap"}, "properties": {"repobilityId": "efcea3ad44f4e305", "scanner": "scanner-primary", "fingerprint": "6690d67dc5ef4d4f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e36079a1f77e255b", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/auto-gap-overrides"}, "properties": {"repobilityId": "110506cc2375feb1", "scanner": "scanner-primary", "fingerprint": "e36079a1f77e255b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e681f9a5fd13e4a5", "level": "note", "message": {"text": "Unused endpoint: GET /api/runs/:runId/overlay-suggestions"}, "properties": {"repobilityId": "871e9b7c86aad27f", "scanner": "scanner-primary", "fingerprint": "e681f9a5fd13e4a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee64089b10e7ccb4", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/apply-suggestion"}, "properties": {"repobilityId": "ac4e23176f2896ac", "scanner": "scanner-primary", "fingerprint": "ee64089b10e7ccb4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2756a7a9144b058", "level": "note", "message": {"text": "Unused endpoint: POST /api/runs/:runId/apply-all-suggestions"}, "properties": {"repobilityId": "827cb9eb87a28d17", "scanner": "scanner-primary", "fingerprint": "a2756a7a9144b058", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e120fff75b0bff32", "level": "note", "message": {"text": "Unused endpoint: GET /api/elevenlabs/voices"}, "properties": {"repobilityId": "d6e7be2af85b4b7b", "scanner": "scanner-primary", "fingerprint": "e120fff75b0bff32", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}