{"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-34e72a8fcea5837b", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-540d0864e210bf36", "name": "Possibly dead Python function: cancel", "shortDescription": {"text": "Possibly dead Python function: cancel"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3f7c2159ef6aafa", "name": "Possibly dead Python function: reactivate", "shortDescription": {"text": "Possibly dead Python function: reactivate"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a376dbb6d237af3f", "name": "Possibly dead Python function: resubscribe", "shortDescription": {"text": "Possibly dead Python function: resubscribe"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b94a4e0394a8fd81", "name": "Possibly dead Python function: cancel_downgrade", "shortDescription": {"text": "Possibly dead Python function: cancel_downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3805fdcd653f7b6", "name": "Possibly dead Python function: transfer_credits", "shortDescription": {"text": "Possibly dead Python function: transfer_credits"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5f8972df79e2bc5", "name": "Possibly dead Python function: process_checkout_completed", "shortDescription": {"text": "Possibly dead Python function: process_checkout_completed"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22f03460b9d15dc8", "name": "Possibly dead Python function: process_subscription_updated", "shortDescription": {"text": "Possibly dead Python function: process_subscription_updated"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77fb0c8d3e91cb1b", "name": "Possibly dead Python function: process_subscription_deleted", "shortDescription": {"text": "Possibly dead Python function: process_subscription_deleted"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c34abda6c30c9ee0", "name": "Possibly dead Python function: process_invoice_paid", "shortDescription": {"text": "Possibly dead Python function: process_invoice_paid"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b00890e19ab51b58", "name": "Possibly dead Python function: process_payment_failed", "shortDescription": {"text": "Possibly dead Python function: process_payment_failed"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddfe0c2784b11823", "name": "Possibly dead Python function: process_refund", "shortDescription": {"text": "Possibly dead Python function: process_refund"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d6c189bfd4c57c6", "name": "Possibly dead Python function: handle_email_mismatch", "shortDescription": {"text": "Possibly dead Python function: handle_email_mismatch"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3019a7f188aaae6d", "name": "Possibly dead Python function: check_stale_payments", "shortDescription": {"text": "Possibly dead Python function: check_stale_payments"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73da133871ad11ff", "name": "Possibly dead Python function: auto_issue_monthly", "shortDescription": {"text": "Possibly dead Python function: auto_issue_monthly"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb74bde12c0296c7", "name": "Possibly dead Python function: check_and_consume", "shortDescription": {"text": "Possibly dead Python function: check_and_consume"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3355f006824e2c2", "name": "Possibly dead Python function: create_checkout", "shortDescription": {"text": "Possibly dead Python function: create_checkout"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2bf155fd0aad1b5d", "name": "Possibly dead Python function: process_webhook", "shortDescription": {"text": "Possibly dead Python function: process_webhook"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-960687b6d9ff8b05", "name": "Possibly dead Python function: create_billing_stack", "shortDescription": {"text": "Possibly dead Python function: create_billing_stack"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e91fc8eb2c014b23", "name": "Possibly dead Python function: check_risk", "shortDescription": {"text": "Possibly dead Python function: check_risk"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-161ac2984b20ffd2", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-pages.js:854", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-pages.js:854"}, "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-de17db6df1a08472", "name": "Stray `console.log` in TS/JS \u2014 scripts/gen-config.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-config.js:21"}, "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-947b96e599b2ca73", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-content.js:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-content.js:342"}, "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-e289cbcb2876cab7", "name": "Stray `console.log` in TS/JS \u2014 bots/bot2_community_mod.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 bots/bot2_community_mod.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8896e918cbf5a4eb", "name": "Stray `console.log` in TS/JS \u2014 bots/bot1_dream_analyzer.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 bots/bot1_dream_analyzer.js:9"}, "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-25e8be671c1bc9a5", "name": "Icon-only button without accessible name \u2014 src/tabs/dali-ui.js:119", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/tabs/dali-ui.js:119"}, "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-878570b22de89e26", "name": "Icon-only button without accessible name \u2014 src/components/dream-export.js:29", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/dream-export.js:29"}, "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-9d558b7cc2d49627", "name": "Icon-only button without accessible name \u2014 src/components/dream-export-qr.js:62", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/dream-export-qr.js:62"}, "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-782ee62693230e9f", "name": "Icon-only button without accessible name \u2014 src/components/sleep-checkin.js:44", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/components/sleep-checkin.js:44"}, "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-b2eace41cc5ace94", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/notify-ops.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/notify-ops.ts:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47a001d794933cb7", "name": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-notifications/index.ts:152", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-notifications/index.ts:152"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a2c4c946b8d3fb1", "name": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-verify/index.ts:210", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-verify/index.ts:210"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9748f14ac3d4d784", "name": "Insecure pattern 'node_child_process' in package.json:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in package.json: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-7f18fe31594c8075", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:157", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:157"}, "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-ce822a0dd0563dd0", "name": "Insecure pattern 'direct_innerhtml_assignment' in landing.html:1128", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in landing.html:1128"}, "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-32ff0ff7e76f54db", "name": "Insecure pattern 'cors_wildcard' in scripts/dev-proxy.mjs:38", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/dev-proxy.mjs:38"}, "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-8e61abab0197c85e", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-phase2-reports.cjs:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-phase2-reports.cjs:97"}, "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-2382adb52b6ce737", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-similar-dreams.cjs:44", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-similar-dreams.cjs:44"}, "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-17885a0cb15c22e8", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/app.js:263", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app.js:263"}, "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-c3ac239accc92133", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/community.js:118", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/community.js:118"}, "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-6a3106719311c361", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-flow.js:49", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-flow.js:49"}, "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-fea1b899eb26f975", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my.js:53", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my.js:53"}, "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-1cebdc190ac5e426", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream-share.js:159", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream-share.js:159"}, "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-0d659d0b870341b1", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-ui.js:31", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-ui.js:31"}, "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-d20e46c2f6324222", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream.js:208", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream.js:208"}, "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-2e010cde10081b1f", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-monthly-report.js:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-monthly-report.js:91"}, "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-7122c1970bc854c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-emotion-sleep.js:81", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-emotion-sleep.js:81"}, "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-18e6fd716691c745", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-chat.js:27", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-chat.js:27"}, "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-188ffe0d2b0b383f", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-dict.js:64", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-dict.js:64"}, "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-a6d48d5c6af7975f", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export.js:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export.js:26"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f272ccebe742ffd0", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/symbol-tracker.js:58", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/symbol-tracker.js:58"}, "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-fc19ee5b7aa0a242", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/radar.js:8", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/radar.js:8"}, "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-dd5a534dd51180ef", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/paywall.js:68", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/paywall.js:68"}, "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-c568492c6f644168", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/emotion-chart.js:64", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/emotion-chart.js:64"}, "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-4fc3a7acb532eef0", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export-qr.js:59", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export-qr.js:59"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66a89f2933252b5a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/components/sleep-checkin.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/sleep-checkin.js:41"}, "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-6b986751bc4edc58", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/web-push.js:28", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/web-push.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-5f26627ceadd050c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/payment.js:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/payment.js:185"}, "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-00de5c319833ed05", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/subscription.js:149", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/subscription.js:149"}, "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-1f60a0112885ebbb", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/growth.js:267", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/growth.js:267"}, "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-db9b9d5914dc0c79", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/dream-context.js:123", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/dream-context.js:123"}, "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-c944f37c66d5f71a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/notification-scheduler.js:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/notification-scheduler.js:185"}, "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-cc9bae9e3c7319ea", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/ads.js:189", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/ads.js:189"}, "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-f1e808297f606fe1", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/services/auth.js:172", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/auth.js:172"}, "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-7ed8c767d0e42cfd", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/push-subscribe/index.ts:8", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-subscribe/index.ts:8"}, "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-9c565fd91a60044e", "name": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-google-verify/index.ts:47", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-google-verify/index.ts:47"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f9e8d53dc7a2d0f1", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-confirm/index.ts:24", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-confirm/index.ts:24"}, "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-e0c36b0f2ff04a6a", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/push-scheduler/index.ts:16", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-scheduler/index.ts:16"}, "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-b506699c8357b8a1", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/create-checkout/index.ts:59", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/create-checkout/index.ts:59"}, "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-43ca910e61eb94a2", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-checkout/index.ts:23", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-checkout/index.ts:23"}, "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-28d1e0a9efac8620", "name": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-apple-verify/index.ts:64", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-apple-verify/index.ts:64"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/deploy-pages@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad6701f0a8405e22", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da94475457326545", "name": "Very large file: _archive/deadcode_20260612_shared_python/payment_core.py (1757 lines)", "shortDescription": {"text": "Very large file: _archive/deadcode_20260612_shared_python/payment_core.py (1757 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-922da0eff6002484", "name": "Very large file: _archive/deadcode_20260612_shared_python/retention_engine.py (2018 lines)", "shortDescription": {"text": "Very large file: _archive/deadcode_20260612_shared_python/retention_engine.py (2018 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-0746db545878a121", "name": "Very large file: scripts/generate-seo-pages.js (866 lines)", "shortDescription": {"text": "Very large file: scripts/generate-seo-pages.js (866 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-677f43d08b28fd1f", "name": "Very large file: src/utils/dream-data.js (1219 lines)", "shortDescription": {"text": "Very large file: src/utils/dream-data.js (1219 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-44be09cac1a16f5b", "name": "Very large file: src/tabs/my.js (1334 lines)", "shortDescription": {"text": "Very large file: src/tabs/my.js (1334 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-2406ffc311becedb", "name": "Very large file: src/tabs/dream.js (1786 lines)", "shortDescription": {"text": "Very large file: src/tabs/dream.js (1786 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "19 tests / 101 src (ratio 0.19)."}, "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 64 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 21 placeholder/mock markers across 8 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.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-bd2836842106fd40", "name": "Legacy-named symbol `test_client_source_references_only_v1` in tests/test_toss_routing.py:75", "shortDescription": {"text": "Legacy-named symbol `test_client_source_references_only_v1` in tests/test_toss_routing.py:75"}, "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-f0342d2bf3fed77a", "name": "Commented-code block (5 lines) in _archive/deadcode_20260612_shared_python/risk_guardian.py:18", "shortDescription": {"text": "Commented-code block (5 lines) in _archive/deadcode_20260612_shared_python/risk_guardian.py: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-8dab60b6211a1235", "name": "Commented-code block (10 lines) in _archive/deadcode_20260612_shared_python/editor_log.py:23", "shortDescription": {"text": "Commented-code block (10 lines) in _archive/deadcode_20260612_shared_python/editor_log.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89d1373a109c8fdf", "name": "Commented-code block (5 lines) in scripts/dev-proxy.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dev-proxy.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b036ae7ca7a9f967", "name": "Commented-code block (5 lines) in scripts/gen-config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/gen-config.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1571535b10c6be6", "name": "Commented-code block (5 lines) in scripts/llm_live_test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/llm_live_test.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1a1f97775573c54", "name": "Commented-code block (7 lines) in src/utils/aurora-scroll.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/utils/aurora-scroll.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69c2b4e231e35df0", "name": "Commented-code block (5 lines) in src/utils/crisis.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/crisis.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76a0f12ed0bd7301", "name": "Commented-code block (7 lines) in src/tabs/dream-demo.js:32", "shortDescription": {"text": "Commented-code block (7 lines) in src/tabs/dream-demo.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-732c2bf7d85c04b8", "name": "Commented-code block (7 lines) in src/tabs/dream.js:273", "shortDescription": {"text": "Commented-code block (7 lines) in src/tabs/dream.js:273"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f44da99753191cb", "name": "Legacy-named symbol `paywall_cta_v1` in src/components/paywall.js:54", "shortDescription": {"text": "Legacy-named symbol `paywall_cta_v1` in src/components/paywall.js:54"}, "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-4008bae8d92de261", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-toss.js:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-toss.js:27"}, "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-f47870dbc3dd74ac", "name": "Commented-code block (5 lines) in src/services/payment.js:15", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/payment.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c6140e5f78a26bf", "name": "Commented-code block (5 lines) in src/services/analytics.js:34", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/analytics.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fabf9a4dd0e9340d", "name": "Commented-code block (11 lines) in src/services/subscription.js:6", "shortDescription": {"text": "Commented-code block (11 lines) in src/services/subscription.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fdb22ed73dc30a0", "name": "Legacy-named symbol `promo_tone_v1` in src/services/growth.js:255", "shortDescription": {"text": "Legacy-named symbol `promo_tone_v1` in src/services/growth.js:255"}, "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-5f6a14791a15b0d3", "name": "Commented-code block (5 lines) in src/services/api.js:54", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/api.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76f58788e3f03f96", "name": "Commented-code block (6 lines) in src/services/dream-context.js:215", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/dream-context.js:215"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9436088c1a17478", "name": "Legacy-named symbol `paywall_cta_v1` in src/services/ab-test.js:8", "shortDescription": {"text": "Legacy-named symbol `paywall_cta_v1` in src/services/ab-test.js:8"}, "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-fa3f6eec399130dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-stripe.js:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-stripe.js:18"}, "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-635169614a89d3e4", "name": "Commented-code block (5 lines) in src/config/feature-flags.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/feature-flags.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-66cb6e951af0a471", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-verify/index.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-verify/index.ts:94"}, "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-8ac0517954ffeb8b", "name": "Commented-code block (6 lines) in supabase/functions/push-scheduler/index.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/push-scheduler/index.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ce75e1631058f43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/push-scheduler/index.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/push-scheduler/index.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7136a674ca3fd2cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-rtdn/index.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-rtdn/index.ts:34"}, "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-a7d0847fb0dd922e", "name": "Commented-code block (7 lines) in supabase/functions/openai-proxy/index.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in supabase/functions/openai-proxy/index.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92310933da6988d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/openai-proxy/index.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/openai-proxy/index.ts:94"}, "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-9a2c3ffc8e52090a", "name": "Commented-code block (5 lines) in supabase/functions/openai-proxy/prompts.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/openai-proxy/prompts.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25014d3af64e89e2", "name": "Commented-code block (5 lines) in supabase/functions/_shared/notify-ops.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/_shared/notify-ops.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0261ebbaa91d4e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/notify-ops.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/notify-ops.ts:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1816a6b5ef2e320", "name": "Commented-code block (5 lines) in supabase/functions/create-checkout/index.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/create-checkout/index.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d373a4abcc405e2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/create-checkout/index.ts:180", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/create-checkout/index.ts:180"}, "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-27404ebdb8449fcd", "name": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts: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-eba4664dea669a46", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe-webhook/index.ts:224", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe-webhook/index.ts:224"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c595ef29d6c83029", "name": "Commented-code block (6 lines) in supabase/functions/billing-apple-notifications/index.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/billing-apple-notifications/index.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e71cc64e70c1d16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-apple-verify/index.ts:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-apple-verify/index.ts:196"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55c5d8f153f65c16", "name": "Legacy-named symbol `create_backup` in .claude/hooks/auto_backup.py:128", "shortDescription": {"text": "Legacy-named symbol `create_backup` in .claude/hooks/auto_backup.py:128"}, "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-63180f8ff5d994fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:94"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\n_archive/deadcode_20260612_shared_python/payment_core.py:fetch_one, _archive/deadcode_20260612_shared_python/retention_engine.py:fetch_one\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24458"}, "properties": {"repository": "baeminkyu9419-beep/monggeul", "repoUrl": "https://github.com/baeminkyu9419-beep/monggeul", "branch": "main"}, "results": [{"ruleId": "scanner-34e72a8fcea5837b", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "34e72a8fcea5837b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:247"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-540d0864e210bf36", "level": "note", "message": {"text": "Possibly dead Python function: cancel"}, "properties": {"repobilityId": "dd964844068540fe", "scanner": "scanner-primary", "fingerprint": "540d0864e210bf36", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:284"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e3f7c2159ef6aafa", "level": "note", "message": {"text": "Possibly dead Python function: reactivate"}, "properties": {"repobilityId": "eb0901801574e7f4", "scanner": "scanner-primary", "fingerprint": "e3f7c2159ef6aafa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:309"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a376dbb6d237af3f", "level": "note", "message": {"text": "Possibly dead Python function: resubscribe"}, "properties": {"repobilityId": "1dbd7be42ba3695a", "scanner": "scanner-primary", "fingerprint": "a376dbb6d237af3f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:331"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b94a4e0394a8fd81", "level": "note", "message": {"text": "Possibly dead Python function: cancel_downgrade"}, "properties": {"repobilityId": "935e4384cbbdf19c", "scanner": "scanner-primary", "fingerprint": "b94a4e0394a8fd81", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:348"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3805fdcd653f7b6", "level": "note", "message": {"text": "Possibly dead Python function: transfer_credits"}, "properties": {"repobilityId": "4d2fa278abab0bba", "scanner": "scanner-primary", "fingerprint": "b3805fdcd653f7b6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:598"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5f8972df79e2bc5", "level": "note", "message": {"text": "Possibly dead Python function: process_checkout_completed"}, "properties": {"repobilityId": "ac86fb5096e0900e", "scanner": "scanner-primary", "fingerprint": "b5f8972df79e2bc5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:746"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22f03460b9d15dc8", "level": "note", "message": {"text": "Possibly dead Python function: process_subscription_updated"}, "properties": {"repobilityId": "2e41805d4451e140", "scanner": "scanner-primary", "fingerprint": "22f03460b9d15dc8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:808"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77fb0c8d3e91cb1b", "level": "note", "message": {"text": "Possibly dead Python function: process_subscription_deleted"}, "properties": {"repobilityId": "2906f8ff7cea6f78", "scanner": "scanner-primary", "fingerprint": "77fb0c8d3e91cb1b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:836"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c34abda6c30c9ee0", "level": "note", "message": {"text": "Possibly dead Python function: process_invoice_paid"}, "properties": {"repobilityId": "5fdf3c8490680c27", "scanner": "scanner-primary", "fingerprint": "c34abda6c30c9ee0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:851"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b00890e19ab51b58", "level": "note", "message": {"text": "Possibly dead Python function: process_payment_failed"}, "properties": {"repobilityId": "c9f045135a303874", "scanner": "scanner-primary", "fingerprint": "b00890e19ab51b58", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:898"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ddfe0c2784b11823", "level": "note", "message": {"text": "Possibly dead Python function: process_refund"}, "properties": {"repobilityId": "09a82980a6269260", "scanner": "scanner-primary", "fingerprint": "ddfe0c2784b11823", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:932"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9d6c189bfd4c57c6", "level": "note", "message": {"text": "Possibly dead Python function: handle_email_mismatch"}, "properties": {"repobilityId": "4bbd1b084583034a", "scanner": "scanner-primary", "fingerprint": "9d6c189bfd4c57c6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1088"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3019a7f188aaae6d", "level": "note", "message": {"text": "Possibly dead Python function: check_stale_payments"}, "properties": {"repobilityId": "544278ec867ae69b", "scanner": "scanner-primary", "fingerprint": "3019a7f188aaae6d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1133"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73da133871ad11ff", "level": "note", "message": {"text": "Possibly dead Python function: auto_issue_monthly"}, "properties": {"repobilityId": "4b095f080facf0ad", "scanner": "scanner-primary", "fingerprint": "73da133871ad11ff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1262"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb74bde12c0296c7", "level": "note", "message": {"text": "Possibly dead Python function: check_and_consume"}, "properties": {"repobilityId": "36841350b5ca2cb7", "scanner": "scanner-primary", "fingerprint": "cb74bde12c0296c7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1331"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3355f006824e2c2", "level": "note", "message": {"text": "Possibly dead Python function: create_checkout"}, "properties": {"repobilityId": "3e7aae7936790356", "scanner": "scanner-primary", "fingerprint": "c3355f006824e2c2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1485"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2bf155fd0aad1b5d", "level": "note", "message": {"text": "Possibly dead Python function: process_webhook"}, "properties": {"repobilityId": "268268d220d01f76", "scanner": "scanner-primary", "fingerprint": "2bf155fd0aad1b5d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1506"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-960687b6d9ff8b05", "level": "note", "message": {"text": "Possibly dead Python function: create_billing_stack"}, "properties": {"repobilityId": "3bd06c9320620cb7", "scanner": "scanner-primary", "fingerprint": "960687b6d9ff8b05", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/payment_core.py:1697"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e91fc8eb2c014b23", "level": "note", "message": {"text": "Possibly dead Python function: check_risk"}, "properties": {"repobilityId": "3ea0563069c63a4b", "scanner": "scanner-primary", "fingerprint": "e91fc8eb2c014b23", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/deadcode_20260612_shared_python/risk_guardian.py:209"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-161ac2984b20ffd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-seo-pages.js:854"}, "properties": {"repobilityId": "990d7666bf2f17b5", "scanner": "scanner-primary", "fingerprint": "161ac2984b20ffd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de17db6df1a08472", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gen-config.js:21"}, "properties": {"repobilityId": "934421afe971bbb3", "scanner": "scanner-primary", "fingerprint": "de17db6df1a08472", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-947b96e599b2ca73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-content.js:342"}, "properties": {"repobilityId": "aa99349b95728429", "scanner": "scanner-primary", "fingerprint": "947b96e599b2ca73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e289cbcb2876cab7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 bots/bot2_community_mod.js:23"}, "properties": {"repobilityId": "a1f9064718fc3fe9", "scanner": "scanner-primary", "fingerprint": "e289cbcb2876cab7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8896e918cbf5a4eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 bots/bot1_dream_analyzer.js:9"}, "properties": {"repobilityId": "6963459e85d2c4b3", "scanner": "scanner-primary", "fingerprint": "8896e918cbf5a4eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25e8be671c1bc9a5", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/tabs/dali-ui.js:119"}, "properties": {"repobilityId": "7a0d6a2e049a2fd4", "scanner": "scanner-primary", "fingerprint": "25e8be671c1bc9a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-878570b22de89e26", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/dream-export.js:29"}, "properties": {"repobilityId": "82aa768daa0ae54c", "scanner": "scanner-primary", "fingerprint": "878570b22de89e26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-9d558b7cc2d49627", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/dream-export-qr.js:62"}, "properties": {"repobilityId": "a4b12a85f64fc2d3", "scanner": "scanner-primary", "fingerprint": "9d558b7cc2d49627", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-782ee62693230e9f", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/components/sleep-checkin.js:44"}, "properties": {"repobilityId": "e9245a8b8ab7545f", "scanner": "scanner-primary", "fingerprint": "782ee62693230e9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-b2eace41cc5ace94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/notify-ops.ts:17"}, "properties": {"repobilityId": "d7593c6e07a19a5a", "scanner": "scanner-primary", "fingerprint": "b2eace41cc5ace94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47a001d794933cb7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-notifications/index.ts:152"}, "properties": {"repobilityId": "479471028c4fa7b1", "scanner": "scanner-primary", "fingerprint": "47a001d794933cb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9a2c4c946b8d3fb1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 supabase/functions/billing-apple-verify/index.ts:210"}, "properties": {"repobilityId": "4f04a5e04a445fb2", "scanner": "scanner-primary", "fingerprint": "9a2c4c946b8d3fb1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-9748f14ac3d4d784", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in package.json:12"}, "properties": {"repobilityId": "40fa5506c1a3b684", "scanner": "scanner-primary", "fingerprint": "9748f14ac3d4d784", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-7f18fe31594c8075", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:157"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "7f18fe31594c8075", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 157}}}]}, {"ruleId": "scanner-ce822a0dd0563dd0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in landing.html:1128"}, "properties": {"repobilityId": "5b2c9c5410f6bea7", "scanner": "scanner-primary", "fingerprint": "ce822a0dd0563dd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "landing.html"}, "region": {"startLine": 1128}}}]}, {"ruleId": "scanner-32ff0ff7e76f54db", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/dev-proxy.mjs:38"}, "properties": {"repobilityId": "8b70e2ae254e1d5c", "scanner": "scanner-primary", "fingerprint": "32ff0ff7e76f54db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev-proxy.mjs"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-8e61abab0197c85e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-phase2-reports.cjs:97"}, "properties": {"repobilityId": "5fd5c1240022f47f", "scanner": "scanner-primary", "fingerprint": "8e61abab0197c85e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/patch-phase2-reports.cjs"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-2382adb52b6ce737", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/patch-similar-dreams.cjs:44"}, "properties": {"repobilityId": "8fcd3f73111100db", "scanner": "scanner-primary", "fingerprint": "2382adb52b6ce737", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/patch-similar-dreams.cjs"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-17885a0cb15c22e8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app.js:263"}, "properties": {"repobilityId": "efc0869950ee10d2", "scanner": "scanner-primary", "fingerprint": "17885a0cb15c22e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app.js"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-c3ac239accc92133", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/community.js:118"}, "properties": {"repobilityId": "2f793834853ab706", "scanner": "scanner-primary", "fingerprint": "c3ac239accc92133", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/community.js"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-6a3106719311c361", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-flow.js:49"}, "properties": {"repobilityId": "e546db15aea03922", "scanner": "scanner-primary", "fingerprint": "6a3106719311c361", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/my-flow.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-fea1b899eb26f975", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my.js:53"}, "properties": {"repobilityId": "6fec4ee192c5045f", "scanner": "scanner-primary", "fingerprint": "fea1b899eb26f975", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/my.js"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-1cebdc190ac5e426", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream-share.js:159"}, "properties": {"repobilityId": "87c06cdb8d36612e", "scanner": "scanner-primary", "fingerprint": "1cebdc190ac5e426", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/dream-share.js"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-0d659d0b870341b1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-ui.js:31"}, "properties": {"repobilityId": "8fb33bdb3d284a52", "scanner": "scanner-primary", "fingerprint": "0d659d0b870341b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/dali-ui.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-d20e46c2f6324222", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dream.js:208"}, "properties": {"repobilityId": "04953a3774afa623", "scanner": "scanner-primary", "fingerprint": "d20e46c2f6324222", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/dream.js"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-2e010cde10081b1f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-monthly-report.js:91"}, "properties": {"repobilityId": "09db249c5d4d18d2", "scanner": "scanner-primary", "fingerprint": "2e010cde10081b1f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/my-monthly-report.js"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-7122c1970bc854c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-emotion-sleep.js:81"}, "properties": {"repobilityId": "222356b633a7750a", "scanner": "scanner-primary", "fingerprint": "7122c1970bc854c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/my-emotion-sleep.js"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-18e6fd716691c745", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/dali-chat.js:27"}, "properties": {"repobilityId": "88e4b27d46a6edc5", "scanner": "scanner-primary", "fingerprint": "18e6fd716691c745", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/dali-chat.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-188ffe0d2b0b383f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/tabs/my-dict.js:64"}, "properties": {"repobilityId": "269d984121516aba", "scanner": "scanner-primary", "fingerprint": "188ffe0d2b0b383f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/tabs/my-dict.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-a6d48d5c6af7975f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export.js:26"}, "properties": {"repobilityId": "1d7992b98176de64", "scanner": "scanner-primary", "fingerprint": "a6d48d5c6af7975f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/dream-export.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-f272ccebe742ffd0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/symbol-tracker.js:58"}, "properties": {"repobilityId": "83b562d6c1b23e0e", "scanner": "scanner-primary", "fingerprint": "f272ccebe742ffd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/symbol-tracker.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-fc19ee5b7aa0a242", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/radar.js:8"}, "properties": {"repobilityId": "47ca59fad862806f", "scanner": "scanner-primary", "fingerprint": "fc19ee5b7aa0a242", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/radar.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-dd5a534dd51180ef", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/paywall.js:68"}, "properties": {"repobilityId": "d1edcb6901b91ace", "scanner": "scanner-primary", "fingerprint": "dd5a534dd51180ef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/paywall.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-c568492c6f644168", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/emotion-chart.js:64"}, "properties": {"repobilityId": "295afc17978e8c79", "scanner": "scanner-primary", "fingerprint": "c568492c6f644168", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/emotion-chart.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-4fc3a7acb532eef0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/dream-export-qr.js:59"}, "properties": {"repobilityId": "d08590bcf4aee3dc", "scanner": "scanner-primary", "fingerprint": "4fc3a7acb532eef0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/dream-export-qr.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-66a89f2933252b5a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/components/sleep-checkin.js:41"}, "properties": {"repobilityId": "d1dccfea89d08a69", "scanner": "scanner-primary", "fingerprint": "66a89f2933252b5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/sleep-checkin.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-6b986751bc4edc58", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/web-push.js:28"}, "properties": {"repobilityId": "594e2495d04600ba", "scanner": "scanner-primary", "fingerprint": "6b986751bc4edc58", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/web-push.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-5f26627ceadd050c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/payment.js:185"}, "properties": {"repobilityId": "8fd3cc58341fd069", "scanner": "scanner-primary", "fingerprint": "5f26627ceadd050c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/payment.js"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-00de5c319833ed05", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/subscription.js:149"}, "properties": {"repobilityId": "bf4eeea03a1ae47b", "scanner": "scanner-primary", "fingerprint": "00de5c319833ed05", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/subscription.js"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-1f60a0112885ebbb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/growth.js:267"}, "properties": {"repobilityId": "7d2c2ceaf863fd97", "scanner": "scanner-primary", "fingerprint": "1f60a0112885ebbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/growth.js"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-db9b9d5914dc0c79", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/dream-context.js:123"}, "properties": {"repobilityId": "1cff80ba4fe0b624", "scanner": "scanner-primary", "fingerprint": "db9b9d5914dc0c79", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/dream-context.js"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-c944f37c66d5f71a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/notification-scheduler.js:185"}, "properties": {"repobilityId": "837d51a7fd9674e6", "scanner": "scanner-primary", "fingerprint": "c944f37c66d5f71a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/notification-scheduler.js"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-cc9bae9e3c7319ea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/ads.js:189"}, "properties": {"repobilityId": "a93c6d631bd6ad86", "scanner": "scanner-primary", "fingerprint": "cc9bae9e3c7319ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/ads.js"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-f1e808297f606fe1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/services/auth.js:172"}, "properties": {"repobilityId": "724f20b0e07a75c5", "scanner": "scanner-primary", "fingerprint": "f1e808297f606fe1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/auth.js"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-7ed8c767d0e42cfd", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-subscribe/index.ts:8"}, "properties": {"repobilityId": "b5441474e8b57414", "scanner": "scanner-primary", "fingerprint": "7ed8c767d0e42cfd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/push-subscribe/index.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-9c565fd91a60044e", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-google-verify/index.ts:47"}, "properties": {"repobilityId": "251b94f87a8efaac", "scanner": "scanner-primary", "fingerprint": "9c565fd91a60044e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/billing-google-verify/index.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-f9e8d53dc7a2d0f1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-confirm/index.ts:24"}, "properties": {"repobilityId": "2fd5fe48c5e64937", "scanner": "scanner-primary", "fingerprint": "f9e8d53dc7a2d0f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/toss-confirm/index.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-e0c36b0f2ff04a6a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/push-scheduler/index.ts:16"}, "properties": {"repobilityId": "9ff870a5fecc5e69", "scanner": "scanner-primary", "fingerprint": "e0c36b0f2ff04a6a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/push-scheduler/index.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-b506699c8357b8a1", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/create-checkout/index.ts:59"}, "properties": {"repobilityId": "1fb7bfc2c2e287bc", "scanner": "scanner-primary", "fingerprint": "b506699c8357b8a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/create-checkout/index.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-43ca910e61eb94a2", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/toss-checkout/index.ts:23"}, "properties": {"repobilityId": "74b822eef4eac89d", "scanner": "scanner-primary", "fingerprint": "43ca910e61eb94a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/toss-checkout/index.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-28d1e0a9efac8620", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in supabase/functions/billing-apple-verify/index.ts:64"}, "properties": {"repobilityId": "681e0e5b28992428", "scanner": "scanner-primary", "fingerprint": "28d1e0a9efac8620", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/billing-apple-verify/index.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "419d1ec7943efec2", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-ad6701f0a8405e22", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8384c23520d55657", "scanner": "scanner-primary", "fingerprint": "ad6701f0a8405e22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da94475457326545", "level": "note", "message": {"text": "Very large file: _archive/deadcode_20260612_shared_python/payment_core.py (1757 lines)"}, "properties": {"repobilityId": "0a673ee7bd84497a", "scanner": "scanner-primary", "fingerprint": "da94475457326545", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-922da0eff6002484", "level": "note", "message": {"text": "Very large file: _archive/deadcode_20260612_shared_python/retention_engine.py (2018 lines)"}, "properties": {"repobilityId": "115f59302380973c", "scanner": "scanner-primary", "fingerprint": "922da0eff6002484", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0746db545878a121", "level": "note", "message": {"text": "Very large file: scripts/generate-seo-pages.js (866 lines)"}, "properties": {"repobilityId": "086a99e50ee25be6", "scanner": "scanner-primary", "fingerprint": "0746db545878a121", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-677f43d08b28fd1f", "level": "note", "message": {"text": "Very large file: src/utils/dream-data.js (1219 lines)"}, "properties": {"repobilityId": "0e2cb73f78326c80", "scanner": "scanner-primary", "fingerprint": "677f43d08b28fd1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44be09cac1a16f5b", "level": "note", "message": {"text": "Very large file: src/tabs/my.js (1334 lines)"}, "properties": {"repobilityId": "0c2b4fa5633166b7", "scanner": "scanner-primary", "fingerprint": "44be09cac1a16f5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2406ffc311becedb", "level": "note", "message": {"text": "Very large file: src/tabs/dream.js (1786 lines)"}, "properties": {"repobilityId": "a72bc9ba1938168c", "scanner": "scanner-primary", "fingerprint": "2406ffc311becedb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "b4e825cd06ca6b6f", "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": "d536499864128745", "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": "695d2dbdab144f87", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "781164953192386c", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "b855f396f363cc81", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "2142edad3e8fd4c8", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd2836842106fd40", "level": "note", "message": {"text": "Legacy-named symbol `test_client_source_references_only_v1` in tests/test_toss_routing.py:75"}, "properties": {"repobilityId": "65c81f8eab64d407", "scanner": "scanner-primary", "fingerprint": "bd2836842106fd40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0342d2bf3fed77a", "level": "none", "message": {"text": "Commented-code block (5 lines) in _archive/deadcode_20260612_shared_python/risk_guardian.py:18"}, "properties": {"repobilityId": "3c53abba2147cbfb", "scanner": "scanner-primary", "fingerprint": "f0342d2bf3fed77a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dab60b6211a1235", "level": "none", "message": {"text": "Commented-code block (10 lines) in _archive/deadcode_20260612_shared_python/editor_log.py:23"}, "properties": {"repobilityId": "14d5be0e49ac5139", "scanner": "scanner-primary", "fingerprint": "8dab60b6211a1235", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89d1373a109c8fdf", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dev-proxy.mjs:1"}, "properties": {"repobilityId": "abb584e94eb41667", "scanner": "scanner-primary", "fingerprint": "89d1373a109c8fdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b036ae7ca7a9f967", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/gen-config.js:1"}, "properties": {"repobilityId": "7177388a9714d375", "scanner": "scanner-primary", "fingerprint": "b036ae7ca7a9f967", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1571535b10c6be6", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/llm_live_test.mjs:1"}, "properties": {"repobilityId": "e72f95f8e7a842f2", "scanner": "scanner-primary", "fingerprint": "e1571535b10c6be6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1a1f97775573c54", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/utils/aurora-scroll.js:1"}, "properties": {"repobilityId": "3750ffe691d5e17d", "scanner": "scanner-primary", "fingerprint": "d1a1f97775573c54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69c2b4e231e35df0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/crisis.js:1"}, "properties": {"repobilityId": "4dcb66630fbce5a8", "scanner": "scanner-primary", "fingerprint": "69c2b4e231e35df0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76a0f12ed0bd7301", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/tabs/dream-demo.js:32"}, "properties": {"repobilityId": "0ac75c6cdcbd5cc1", "scanner": "scanner-primary", "fingerprint": "76a0f12ed0bd7301", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-732c2bf7d85c04b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/tabs/dream.js:273"}, "properties": {"repobilityId": "109973a95ff194a8", "scanner": "scanner-primary", "fingerprint": "732c2bf7d85c04b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f44da99753191cb", "level": "note", "message": {"text": "Legacy-named symbol `paywall_cta_v1` in src/components/paywall.js:54"}, "properties": {"repobilityId": "3957c2cd7779b64e", "scanner": "scanner-primary", "fingerprint": "8f44da99753191cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4008bae8d92de261", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-toss.js:27"}, "properties": {"repobilityId": "6c8936bbbe842613", "scanner": "scanner-primary", "fingerprint": "4008bae8d92de261", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f47870dbc3dd74ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/payment.js:15"}, "properties": {"repobilityId": "7b8b15908f07ec5b", "scanner": "scanner-primary", "fingerprint": "f47870dbc3dd74ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c6140e5f78a26bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/analytics.js:34"}, "properties": {"repobilityId": "d1bafe0d9d80fb96", "scanner": "scanner-primary", "fingerprint": "0c6140e5f78a26bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fabf9a4dd0e9340d", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/services/subscription.js:6"}, "properties": {"repobilityId": "8582270d0ca42b61", "scanner": "scanner-primary", "fingerprint": "fabf9a4dd0e9340d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fdb22ed73dc30a0", "level": "note", "message": {"text": "Legacy-named symbol `promo_tone_v1` in src/services/growth.js:255"}, "properties": {"repobilityId": "09e11f143ab8f19d", "scanner": "scanner-primary", "fingerprint": "7fdb22ed73dc30a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f6a14791a15b0d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/api.js:54"}, "properties": {"repobilityId": "18fb983a3a3b8fca", "scanner": "scanner-primary", "fingerprint": "5f6a14791a15b0d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f58788e3f03f96", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/dream-context.js:215"}, "properties": {"repobilityId": "d1fa51f4e2583e82", "scanner": "scanner-primary", "fingerprint": "76f58788e3f03f96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9436088c1a17478", "level": "note", "message": {"text": "Legacy-named symbol `paywall_cta_v1` in src/services/ab-test.js:8"}, "properties": {"repobilityId": "7c21b784ac829670", "scanner": "scanner-primary", "fingerprint": "b9436088c1a17478", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa3f6eec399130dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/pg-stripe.js:18"}, "properties": {"repobilityId": "844879c9970721db", "scanner": "scanner-primary", "fingerprint": "fa3f6eec399130dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-635169614a89d3e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/feature-flags.js:5"}, "properties": {"repobilityId": "88ee8eaa321d1354", "scanner": "scanner-primary", "fingerprint": "635169614a89d3e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66cb6e951af0a471", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-verify/index.ts:94"}, "properties": {"repobilityId": "d5aef0c4c7d252f1", "scanner": "scanner-primary", "fingerprint": "66cb6e951af0a471", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ac0517954ffeb8b", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/push-scheduler/index.ts:1"}, "properties": {"repobilityId": "015a62f9d62d2daa", "scanner": "scanner-primary", "fingerprint": "8ac0517954ffeb8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ce75e1631058f43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/push-scheduler/index.ts:51"}, "properties": {"repobilityId": "9a62a2fa0726e531", "scanner": "scanner-primary", "fingerprint": "2ce75e1631058f43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7136a674ca3fd2cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-google-rtdn/index.ts:34"}, "properties": {"repobilityId": "1a2dc1c4c5324c1c", "scanner": "scanner-primary", "fingerprint": "7136a674ca3fd2cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7d0847fb0dd922e", "level": "none", "message": {"text": "Commented-code block (7 lines) in supabase/functions/openai-proxy/index.ts:4"}, "properties": {"repobilityId": "e6c78e118e107ea3", "scanner": "scanner-primary", "fingerprint": "a7d0847fb0dd922e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92310933da6988d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/openai-proxy/index.ts:94"}, "properties": {"repobilityId": "e4fc9c6f32ef523c", "scanner": "scanner-primary", "fingerprint": "92310933da6988d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9a2c3ffc8e52090a", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/openai-proxy/prompts.ts:3"}, "properties": {"repobilityId": "a6fe5da16f6529e1", "scanner": "scanner-primary", "fingerprint": "9a2c3ffc8e52090a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25014d3af64e89e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/_shared/notify-ops.ts:8"}, "properties": {"repobilityId": "768dcc6f21a0484f", "scanner": "scanner-primary", "fingerprint": "25014d3af64e89e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0261ebbaa91d4e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/notify-ops.ts:20"}, "properties": {"repobilityId": "b20d08f60487f7ef", "scanner": "scanner-primary", "fingerprint": "b0261ebbaa91d4e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1816a6b5ef2e320", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/create-checkout/index.ts:12"}, "properties": {"repobilityId": "f31829d71a8c9645", "scanner": "scanner-primary", "fingerprint": "b1816a6b5ef2e320", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d373a4abcc405e2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/create-checkout/index.ts:180"}, "properties": {"repobilityId": "703ca7fb3800a78c", "scanner": "scanner-primary", "fingerprint": "8d373a4abcc405e2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27404ebdb8449fcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts:57"}, "properties": {"repobilityId": "788d36a34a4da764", "scanner": "scanner-primary", "fingerprint": "27404ebdb8449fcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eba4664dea669a46", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe-webhook/index.ts:224"}, "properties": {"repobilityId": "ba68c7aed03182d1", "scanner": "scanner-primary", "fingerprint": "eba4664dea669a46", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c595ef29d6c83029", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/billing-apple-notifications/index.ts:64"}, "properties": {"repobilityId": "089c00ee9c953191", "scanner": "scanner-primary", "fingerprint": "c595ef29d6c83029", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e71cc64e70c1d16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/billing-apple-verify/index.ts:196"}, "properties": {"repobilityId": "d456655f42575b8e", "scanner": "scanner-primary", "fingerprint": "4e71cc64e70c1d16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-55c5d8f153f65c16", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in .claude/hooks/auto_backup.py:128"}, "properties": {"repobilityId": "4a9c40d5fd7db6fe", "scanner": "scanner-primary", "fingerprint": "55c5d8f153f65c16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-63180f8ff5d994fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:94"}, "properties": {"repobilityId": "04299db6fceb8831", "scanner": "scanner-primary", "fingerprint": "63180f8ff5d994fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "5159b2aad50283dc", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0d7489c9dc9d10b1", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "117c32db7ba6b933", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}