{"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-a41d673b58d725b0", "name": "Possibly dead Python function: query_records", "shortDescription": {"text": "Possibly dead Python function: query_records"}, "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-23357a50c6b5ce65", "name": "Possibly dead Python function: check_ftl", "shortDescription": {"text": "Possibly dead Python function: check_ftl"}, "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-155de6b2a29649e6", "name": "Possibly dead Python function: start_recall_drill", "shortDescription": {"text": "Possibly dead Python function: start_recall_drill"}, "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-c36f01db5d6d1abc", "name": "Possibly dead Python function: generate_batch_labels", "shortDescription": {"text": "Possibly dead Python function: generate_batch_labels"}, "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-e20e78e0b9e4bf79", "name": "Possibly dead Python function: cmd_troubleshoot", "shortDescription": {"text": "Possibly dead Python function: cmd_troubleshoot"}, "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-b5739c1cd23af966", "name": "Possibly dead Python function: cmd_solve", "shortDescription": {"text": "Possibly dead Python function: cmd_solve"}, "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-5916dfc55e8c97f7", "name": "Possibly dead Python function: cmd_label", "shortDescription": {"text": "Possibly dead Python function: cmd_label"}, "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-7611fda57e3762f1", "name": "Possibly dead Python function: cmd_sweep", "shortDescription": {"text": "Possibly dead Python function: cmd_sweep"}, "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-693d33b86faa6c55", "name": "Possibly dead Python function: cmd_compliance", "shortDescription": {"text": "Possibly dead Python function: cmd_compliance"}, "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-40b7062d02c04199", "name": "Possibly dead Python function: create_branch", "shortDescription": {"text": "Possibly dead Python function: create_branch"}, "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-5483b06dcd3a6f7c", "name": "Possibly dead Python function: check_hash_chain_continuity", "shortDescription": {"text": "Possibly dead Python function: check_hash_chain_continuity"}, "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-be7594f703f1185e", "name": "Possibly dead Python function: check_orphaned_records", "shortDescription": {"text": "Possibly dead Python function: check_orphaned_records"}, "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-b504e5fa630ae878", "name": "Possibly dead Python function: check_tenant_isolation", "shortDescription": {"text": "Possibly dead Python function: check_tenant_isolation"}, "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-3b3c679e16586344", "name": "Possibly dead Python function: build_demo_rules", "shortDescription": {"text": "Possibly dead Python function: build_demo_rules"}, "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-4dd1afa42133712f", "name": "Possibly dead Python function: check_texas_scraper_inheritance", "shortDescription": {"text": "Possibly dead Python function: check_texas_scraper_inheritance"}, "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-706dde30d67fe504", "name": "Possibly dead Python function: check_correlation_middleware", "shortDescription": {"text": "Possibly dead Python function: check_correlation_middleware"}, "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-ccf5d731dac58cd0", "name": "Possibly dead Python function: check_rate_limit_security", "shortDescription": {"text": "Possibly dead Python function: check_rate_limit_security"}, "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-c0591f5aaab407f4", "name": "Possibly dead Python function: check_railway_deployment_workflow", "shortDescription": {"text": "Possibly dead Python function: check_railway_deployment_workflow"}, "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-a666e489334effe7", "name": "Possibly dead Python function: scheduled_job", "shortDescription": {"text": "Possibly dead Python function: scheduled_job"}, "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-de35ca7ada670e1e", "name": "Possibly dead Python function: load_s3_artifact", "shortDescription": {"text": "Possibly dead Python function: load_s3_artifact"}, "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-b54cb84e2a11b686", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "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-57419c1a803dda2f", "name": "Possibly dead Python function: contains_point", "shortDescription": {"text": "Possibly dead Python function: contains_point"}, "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-215625b22e1140a8", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/invite_flow.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/invite_flow.spec.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba7bbb5c41411ad2", "name": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/global-setup.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/global-setup.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d413be5217934651", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/__tests__/lib/json-ld.test.ts:4", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/__tests__/lib/json-ld.test.ts:4"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68b74c2633a85ddc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/compliance-status-widget.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/compliance-status-widget.tsx:248"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0579e25038037360", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/metrics-overview-widget.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/metrics-overview-widget.tsx:93"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3fa500ee1cbeb3c9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/system-health-widget.tsx:45", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/system-health-widget.tsx:45"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1abc3a4ed724750e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/scan-history-widget.tsx:123", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/scan-history-widget.tsx:123"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aee8e3801d164ab4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mobile/FieldCaptureClient.tsx:490", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mobile/FieldCaptureClient.tsx:490"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e5d5e3a48b75c42", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/supply-chain-graph.tsx:138", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/supply-chain-graph.tsx:138"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab326272e288628c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/recall-timer.tsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/recall-timer.tsx:189"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-762612dd9099f8eb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/mass-balance-widget.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/mass-balance-widget.tsx:244"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e9bc787b4093212", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/json-ld.tsx:18", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/json-ld.tsx:18"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89b26df99d6756aa", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/trace/page.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/trace/page.tsx:312"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dddb0ef3916fd352", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/exceptions/page.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/exceptions/page.tsx:225"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6926eb8e91025449", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/login/LoginClient.tsx:446", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/login/LoginClient.tsx:446"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c124d3331df3caff", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/__tests__/routes.test.ts:31", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/__tests__/routes.test.ts:31"}, "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-4dfa0dc04bf3ab7a", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/contact/route.ts:116", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/contact/route.ts:116"}, "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-82d160c59d38106d", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/page.tsx:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/page.tsx:200"}, "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-db0d060f5b5b2088", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/docs/layout.tsx:47", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/docs/layout.tsx:47"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b98e0d63813d66d3", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/quickstart/page.tsx:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/quickstart/page.tsx:183"}, "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-e4b9178824016f95", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/page.tsx:416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/page.tsx:416"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd5be98933a8f3c6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/notifications/page.tsx:249", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/notifications/page.tsx:249"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a6d0eecb9cf53a8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/qa-health/page.tsx:445", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/qa-health/page.tsx:445"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-758805b45ef228f6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/issues/page.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/issues/page.tsx:244"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0634a68e213a8474", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/export-jobs/page.tsx:267", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/export-jobs/page.tsx:267"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6fc4a3b383d28f04", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/audit-log/page.tsx:374", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/audit-log/page.tsx:374"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2c2cdc5d1f7919c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/team/page.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/team/page.tsx:201"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2a99a9647e717a9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/recall-report/page.tsx:404", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/recall-report/page.tsx:404"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a25c152ae38ee46", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/heartbeat/page.tsx:749", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/heartbeat/page.tsx:749"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5605f94a249da37", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/compliance/page.tsx:502", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/compliance/page.tsx:502"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe5a64a40d021b16", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/suppliers/page.tsx:397", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/suppliers/page.tsx:397"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74bc372497a275dd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/scan/page.tsx:176", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/scan/page.tsx:176"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6cabeb8061b14896", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/receiving/page.tsx:471", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/receiving/page.tsx:471"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd541c39ec25d73d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/products/page.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/products/page.tsx:291"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d00d2ac205de020", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/compliance/labels/page.tsx:459", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/compliance/labels/page.tsx:459"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c18fcb863f0381d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/api-console/page.tsx:299", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/api-console/page.tsx:299"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a97e704302e40e91", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/records/page.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/records/page.tsx:166"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f67a84293cc0546", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/usage/page.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/usage/page.tsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bda84f504be0960d", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/app/developer/portal/codegen/page.tsx:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/developer/portal/codegen/page.tsx:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c88418f7c36ad2a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/keys/page.tsx:184", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/keys/page.tsx:184"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f30028b21fedceb8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/onboarding/bulk-upload/page.tsx:716", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/onboarding/bulk-upload/page.tsx:716"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64707e6ff0716609", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/portal/[portalId]/page.tsx:297", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/portal/[portalId]/page.tsx:297"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d55062280f7b48dc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx:1585"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f98d5d9e2df490b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/data-import/components/DataImportClient.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/data-import/components/DataImportClient.tsx:475"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-010ecc2838957c28", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/label-scanner/page.tsx:506", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/label-scanner/page.tsx:506"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e46dfe985ea8248", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/fsma/page.tsx:403", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/fsma/page.tsx:403"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eaf74bbb992a2e75", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/lib/json-ld.ts:9", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/lib/json-ld.ts:9"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a8a87c1dd2f9b44", "name": "Stray `console.log` in TS/JS \u2014 tests/load/user-journey.js:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/user-journey.js:184"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46fd827a02edf13e", "name": "Stray `console.log` in TS/JS \u2014 tests/load/k6-admin-test.js:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/k6-admin-test.js:214"}, "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-fd1f2609c9cb0f9d", "name": "Stray `console.log` in TS/JS \u2014 tests/load/k6-ingestion-test.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/k6-ingestion-test.js:201"}, "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-4552ddcb81302675", "name": "Stray `console.log` in TS/JS \u2014 qa/drift-check.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/drift-check.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-7659039e8d0a80f9", "name": "Stray `console.log` in TS/JS \u2014 qa/regression.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/regression.js:30"}, "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-d3ad2498408ee1c5", "name": "Stray `console.log` in TS/JS \u2014 qa/tenant-test.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/tenant-test.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5766fa8306b1158", "name": "Stray `console.log` in TS/JS \u2014 qa/decision.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/decision.js:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9a60d43591d3dee", "name": "Stray `console.log` in TS/JS \u2014 qa/bad-data.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/bad-data.js:19"}, "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-87ef1f358f81784b", "name": "Stray `console.log` in TS/JS \u2014 qa/summary.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/summary.js:75"}, "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-c3bdc317bfb09cf2", "name": "Stray `console.log` in TS/JS \u2014 qa/export-validate.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/export-validate.js:19"}, "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-af3850edd718e1f0", "name": "Stray `console.log` in TS/JS \u2014 qa/full-flow.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/full-flow.js:22"}, "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-da8ee0ed78597bf8", "name": "Stray `console.log` in TS/JS \u2014 qa/ai-analysis.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/ai-analysis.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fbf431c83f46ef0", "name": "Stray `console.log` in TS/JS \u2014 qa/fsma-lite-check.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 qa/fsma-lite-check.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fa9fb83bc7fe94a", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e_tests.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e_tests.js:54"}, "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-1aea35811f52aa2a", "name": "Stray `console.log` in TS/JS \u2014 scripts/test_fsma_endpoints.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test_fsma_endpoints.js:106"}, "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-5ae6c7aa8c6ea69f", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed_demo.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed_demo.js:120"}, "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-eff54870cbba425d", "name": "Privileged port 50 in use", "shortDescription": {"text": "Privileged port 50 in use"}, "fullDescription": {"text": "Port 50 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-45483f6f85351912", "name": "Privileged port 95 in use", "shortDescription": {"text": "Privileged port 95 in use"}, "fullDescription": {"text": "Port 95 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc0488923332f6a8", "name": "Privileged port 99 in use", "shortDescription": {"text": "Privileged port 99 in use"}, "fullDescription": {"text": "Port 99 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58ffa6481da1b217", "name": "Privileged port 12 in use", "shortDescription": {"text": "Privileged port 12 in use"}, "fullDescription": {"text": "Port 12 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1fc9a316eed0d33e", "name": "Privileged port 10 in use", "shortDescription": {"text": "Privileged port 10 in use"}, "fullDescription": {"text": "Port 10 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-252418bf870d7aed", "name": "Privileged port 256 in use", "shortDescription": {"text": "Privileged port 256 in use"}, "fullDescription": {"text": "Port 256 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-025d2ebb865683f8", "name": "Privileged port 29 in use", "shortDescription": {"text": "Privileged port 29 in use"}, "fullDescription": {"text": "Port 29 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e066691601852931", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faa134129e5545ff", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8893c9de4acfd66f", "name": "Insecure pattern 'node_child_process' in frontend/scripts/production-readiness.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/production-readiness.mjs:3"}, "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-0d1b39cec971f59e", "name": "Insecure pattern 'node_child_process' in frontend/scripts/verify-public-ssr.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/verify-public-ssr.mjs:1"}, "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-3fdce3a9a6f34229", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/__tests__/lib/fetch-with-csrf.test.ts:6", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/__tests__/lib/fetch-with-csrf.test.ts:6"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9c0dcc5f156f430", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/seo/json-ld.tsx:18", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/seo/json-ld.tsx:18"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b1a6e86988be4c0", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/docs/layout.tsx:47", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/docs/layout.tsx:47"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ada7fdb919d1c722", "name": "Insecure pattern 'node_child_process' in qa/summary.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in qa/summary.js:8"}, "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-04cb1db4652f5cf3", "name": "Insecure pattern 'eval_used' in docs/internal/INTERNAL_TOOLS_AUDIT.json:531", "shortDescription": {"text": "Insecure pattern 'eval_used' in docs/internal/INTERNAL_TOOLS_AUDIT.json:531"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6172913818ee962e", "name": "Possible secret in scripts/e2e_brutal_scenario.py", "shortDescription": {"text": "Possible secret in scripts/e2e_brutal_scenario.py"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1535290243f0a2fc", "name": "Insecure pattern 'dangerous_innerhtml' in .github/workflows/review-gates.yml:96", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .github/workflows/review-gates.yml:96"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ceae604a51dce987", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a0afb468e89e566", "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-25124c17e61288bd", "name": "Very large file: frontend/src/app/compliance/snapshots/page.tsx (1044 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/compliance/snapshots/page.tsx (1044 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-255953cffce2d8e6", "name": "Very large file: frontend/src/app/onboarding/bulk-upload/page.tsx (1087 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/onboarding/bulk-upload/page.tsx (1087 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-2a808a7e36a7ade4", "name": "Very large file: frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx (2239 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx (2239 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-43cf9de8c242d40e", "name": "Very large file: frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx (2827 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx (2827 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-c04151c3de0d7fc5", "name": "Very large file: frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx (1199 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx (1199 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-7db42795e9c2fa42", "name": "Very large file: services/shared/canonical_persistence/writer.py (1208 lines)", "shortDescription": {"text": "Very large file: services/shared/canonical_persistence/writer.py (1208 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-790d5c696c621916", "name": "Very large file: services/ingestion/tests/test_webhook_router_v2_1342.py (1904 lines)", "shortDescription": {"text": "Very large file: services/ingestion/tests/test_webhook_router_v2_1342.py (1904 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-1925cb33f7c42569", "name": "Very large file: services/ingestion/tests/test_compliance_score_1342.py (1465 lines)", "shortDescription": {"text": "Very large file: services/ingestion/tests/test_compliance_score_1342.py (1465 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-0d6e3ba573999534", "name": "Very large file: services/ingestion/tests/test_sandbox_evaluators_1342.py (1280 lines)", "shortDescription": {"text": "Very large file: services/ingestion/tests/test_sandbox_evaluators_1342.py (1280 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-641f30a27e9425ec", "name": "Very large file: services/admin/tests/test_auth_routes_1333.py (1933 lines)", "shortDescription": {"text": "Very large file: services/admin/tests/test_auth_routes_1333.py (1933 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-e19463ab93a8059e", "name": "Very large file: alembic/versions/20260505_5ac9e7b1d402_v078_orphan_migration_forward_ports.py (1661 lines)", "shortDescription": {"text": "Very large file: alembic/versions/20260505_5ac9e7b1d402_v078_orphan_migration_forward_ports.py (1661 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 762 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 355 placeholder/mock markers across 134 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-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-94eaa4a6396b3a6d", "name": "Agent authority lacks a verifier contract: .claude/commands/sentinel-check.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/sentinel-check.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27c89ba2fa21d3a4", "name": "Agent authority lacks a verifier contract: .claude/agents/sentinel-interstitial.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/sentinel-interstitial.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e26e9a15db46a47", "name": "Commented-code block (5 lines) in conftest.py:34", "shortDescription": {"text": "Commented-code block (5 lines) in conftest.py: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-0d3169091b4765dd", "name": "Legacy-named symbol `webhook_router_v2` in frontend/next.config.js:202", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in frontend/next.config.js:202"}, "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-42990f0dcffa166a", "name": "Commented-code block (8 lines) in frontend/next.config.js:125", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/next.config.js:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db8899a38e1a16cc", "name": "Commented-code block (5 lines) in frontend/eslint.config.mjs:31", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/eslint.config.mjs:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8bb618681be2c50", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:56"}, "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-b2ca6a4905b24bec", "name": "Commented-code block (9 lines) in frontend/src/proxy.ts:14", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/proxy.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-500a51fff915c17a", "name": "Commented-code block (5 lines) in frontend/src/__tests__/api/proxy-sanitization.test.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/api/proxy-sanitization.test.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0aece538b0c7f22d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/api/proxy-sanitization.test.ts:644", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/api/proxy-sanitization.test.ts:644"}, "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-c281b32e701a2a71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/dashboard.test.tsx:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/dashboard.test.tsx:74"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8da2bdfa106985e5", "name": "Commented-code block (6 lines) in frontend/src/__tests__/pages/inflow-lab.test.tsx:389", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/pages/inflow-lab.test.tsx:389"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a88d280f7a8331d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/inflow-lab.test.tsx:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/inflow-lab.test.tsx: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-7bc01280380b43f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/api-security.test.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/api-security.test.ts:36"}, "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-cde230719fcd4b7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/rbac.test.ts:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/rbac.test.ts:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e2cd3d794a3cbc3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/audit-trail.test.ts:88", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/audit-trail.test.ts:88"}, "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-8c44662613a4c596", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/compliance/data-protection.test.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/compliance/data-protection.test.ts:45"}, "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-4e4cd156b59b6540", "name": "Legacy-named symbol `customer_copy` in frontend/src/app/integrations/page.tsx:130", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/integrations/page.tsx:130"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ad00c5e90b17284", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sysadmin/page.tsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sysadmin/page.tsx:56"}, "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-42f9226ec1ddfd11", "name": "Commented-code block (9 lines) in frontend/src/app/auth/callback/route.ts:45", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/app/auth/callback/route.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9afbd0621e255f76", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/verify/VerifyClient.tsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/verify/VerifyClient.tsx:46"}, "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-a05215d4297e575a", "name": "Commented-code block (6 lines) in frontend/src/app/reset-password/ResetPasswordClient.tsx:68", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/reset-password/ResetPasswordClient.tsx:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d10ba39cffabd70", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/login/LoginClient.tsx:189", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/login/LoginClient.tsx:189"}, "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-fb9927dd6a54dfef", "name": "Commented-code block (5 lines) in frontend/src/app/api/__tests__/routes.test.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/api/__tests__/routes.test.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe1eac0693f43e5d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/__tests__/routes.test.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/__tests__/routes.test.ts:82"}, "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-65a42ab2c8226892", "name": "Commented-code block (8 lines) in frontend/src/app/api/auth/supabase/sign-in/route.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/app/api/auth/supabase/sign-in/route.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-2aa90dc59bc6464e", "name": "Commented-code block (5 lines) in frontend/src/app/api/v1/compliance/snapshots/[tenantId]/[snapshotId]/attest/route.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/api/v1/compliance/snapshots/[tenantId]/[snapshotId]/attest/route.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c09bfbfa01aeffe", "name": "Commented-code block (6 lines) in frontend/src/app/api/review/[...path]/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/api/review/[...path]/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1aa0ab316a1718b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/billing/checkout/route.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/billing/checkout/route.ts:46"}, "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-bb3153a010f320c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/tools/verify/route.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/tools/verify/route.ts:42"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5747fa88bc3e13a", "name": "Commented-code block (7 lines) in frontend/src/app/api/session/route.ts:48", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/api/session/route.ts:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdedb86c130176aa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/page.tsx:173", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/page.tsx:173"}, "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-4ae2b40468a13a5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/quickstart/page.tsx:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/quickstart/page.tsx:179"}, "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-099306e3ac55fb3c", "name": "Legacy-named symbol `customer_copy` in frontend/src/app/dashboard/integrations/page.tsx:585", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/dashboard/integrations/page.tsx:585"}, "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-d3a856d3bb50f13d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signup/page.tsx:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signup/page.tsx:54"}, "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-fa628dfee09e97ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sandbox/results/[id]/page.tsx:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sandbox/results/[id]/page.tsx:15"}, "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-fc5605d3e6fe0013", "name": "Commented-code block (10 lines) in frontend/src/app/proof/transformation/page.tsx:18", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/app/proof/transformation/page.tsx: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-76aba5d67020749e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/page.tsx:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/page.tsx:35"}, "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-c5883bc9b54e44f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/playground/page.tsx:413", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/playground/page.tsx:413"}, "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-37f74ec8af876919", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/usage/page.tsx:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/usage/page.tsx:38"}, "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-98cf24ca6ff4644b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/codegen/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/codegen/page.tsx:57"}, "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-430390f243c2ce0b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/keys/page.tsx:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/keys/page.tsx:37"}, "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-6cce9f53109cbc85", "name": "Legacy-named symbol `customer_copy` in frontend/src/app/trust/page.tsx:483", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/trust/page.tsx:483"}, "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-be9d5dbc70aba2e1", "name": "Commented-code block (5 lines) in frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx:735", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx:735"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7da512fb10a4e776", "name": "Commented-code block (6 lines) in frontend/src/app/tools/sop-generator/components/SOPGeneratorClient.tsx:60", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/tools/sop-generator/components/SOPGeneratorClient.tsx:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c90694920f6affca", "name": "Commented-code block (5 lines) in frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90e165551d75ab57", "name": "Commented-code block (6 lines) in frontend/src/lib/api-proxy.ts:42", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/api-proxy.ts:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d37c2c643a4d4bd", "name": "Commented-code block (5 lines) in frontend/src/lib/auth-context.tsx:381", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/auth-context.tsx:381"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07a8032c797b9a99", "name": "Legacy-named symbol `customer_copy` in frontend/src/lib/customer-readiness.ts:64", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in frontend/src/lib/customer-readiness.ts:64"}, "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-3ffca4e4ae5e1cee", "name": "Commented-code block (6 lines) in frontend/src/lib/customer-readiness.ts:403", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/customer-readiness.ts:403"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1b4228ccbaad906", "name": "Commented-code block (5 lines) in frontend/src/lib/api-client.ts:498", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/api-client.ts:498"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-731001781d066956", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/fetch-with-csrf.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/fetch-with-csrf.ts:21"}, "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-d08b9fd80310965e", "name": "Commented-code block (6 lines) in frontend/src/lib/analytics.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics.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-16c793d9531e252b", "name": "Legacy-named symbol `webhook_router_v2` in tests/test_server_idempotency_middleware.py:3", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in tests/test_server_idempotency_middleware.py:3"}, "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-b4dceeec6dedb86d", "name": "Commented-code block (7 lines) in tests/security/test_tenant_isolation_phase1.py:48", "shortDescription": {"text": "Commented-code block (7 lines) in tests/security/test_tenant_isolation_phase1.py:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-703799ab5b419cc5", "name": "Legacy-named symbol `rule_v1` in tests/invariants/test_invariants.py:171", "shortDescription": {"text": "Legacy-named symbol `rule_v1` in tests/invariants/test_invariants.py:171"}, "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-75581722cb87cc1c", "name": "Legacy-named symbol `test_core_module_header_not_legacy` in tests/shared/test_cte_persistence_cluster_1323_1324_1334_133", "shortDescription": {"text": "Legacy-named symbol `test_core_module_header_not_legacy` in tests/shared/test_cte_persistence_cluster_1323_1324_1334_1335.py:276"}, "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-cfc7d97c7837396c", "name": "Commented-code block (5 lines) in tests/shared/test_canonical_persistence_hardening.py:427", "shortDescription": {"text": "Commented-code block (5 lines) in tests/shared/test_canonical_persistence_hardening.py:427"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14bbd7f647984f6a", "name": "Commented-code block (5 lines) in tests/shared/test_rules_seeds_per_cte_coverage.py:30", "shortDescription": {"text": "Commented-code block (5 lines) in tests/shared/test_rules_seeds_per_cte_coverage.py:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bddc2e956d97c758", "name": "Legacy-named symbol `rge_live_legacy` in tests/shared/test_api_key_store.py:295", "shortDescription": {"text": "Legacy-named symbol `rge_live_legacy` in tests/shared/test_api_key_store.py:295"}, "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-6bee6aac1add78b0", "name": "Legacy-named symbol `legacy_regex_v1` in tests/shared/test_nlp_extraction_pg_pipeline.py:282", "shortDescription": {"text": "Legacy-named symbol `legacy_regex_v1` in tests/shared/test_nlp_extraction_pg_pipeline.py:282"}, "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-4d42f2d9f6f6337e", "name": "Commented-code block (5 lines) in tests/shared/test_rules_engine_hardening.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in tests/shared/test_rules_engine_hardening.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffb41940ff153bfc", "name": "Legacy-named symbol `dual_write_legacy` in tests/shared/test_canonical_dual_write_strict_1277.py:2", "shortDescription": {"text": "Legacy-named symbol `dual_write_legacy` in tests/shared/test_canonical_dual_write_strict_1277.py:2"}, "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-b6171d64072a1e38", "name": "Commented-code block (6 lines) in tests/shared/test_canonical_event_idempotency_key.py:88", "shortDescription": {"text": "Commented-code block (6 lines) in tests/shared/test_canonical_event_idempotency_key.py:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53846c46877dcaa9", "name": "Commented-code block (9 lines) in tests/load/test_trace_latency.py:22", "shortDescription": {"text": "Commented-code block (9 lines) in tests/load/test_trace_latency.py:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7568081bc7f81498", "name": "Commented-code block (5 lines) in tests/audit/verify_chain.py:131", "shortDescription": {"text": "Commented-code block (5 lines) in tests/audit/verify_chain.py:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe6591a5c18affe7", "name": "Commented-code block (5 lines) in tests/migrations/test_rls_hardening.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in tests/migrations/test_rls_hardening.py:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cde5a3e6f0700ad2", "name": "Commented-code block (5 lines) in tests/migrations/test_rls_coverage.py:60", "shortDescription": {"text": "Commented-code block (5 lines) in tests/migrations/test_rls_coverage.py:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e5fd0793135116c", "name": "Legacy-named symbol `payload_v1` in tests/data_integrity/test_fsma_204_freshness_phase3b.py:69", "shortDescription": {"text": "Legacy-named symbol `payload_v1` in tests/data_integrity/test_fsma_204_freshness_phase3b.py:69"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c718aae59bc57e4c", "name": "Commented-code block (9 lines) in tests/data_integrity/test_fsma_204_freshness_phase3b.py:112", "shortDescription": {"text": "Commented-code block (9 lines) in tests/data_integrity/test_fsma_204_freshness_phase3b.py:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2aa305aaf62559c8", "name": "Network/subprocess call without timeout or try/except \u2014 regengine/swarm/coordinator.py:157", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 regengine/swarm/coordinator.py:157"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71ab5fd709ce44d8", "name": "Commented-code block (5 lines) in qa/tenant-test.js:125", "shortDescription": {"text": "Commented-code block (5 lines) in qa/tenant-test.js:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e98c546331e7a1c2", "name": "Legacy-named symbol `energy_nerc_cip_v1` in scripts/verify_fsma_only.py:37", "shortDescription": {"text": "Legacy-named symbol `energy_nerc_cip_v1` in scripts/verify_fsma_only.py:37"}, "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-ae05a63762ebabdd", "name": "Legacy-named symbol `webhook_router_v2` in scripts/verify_inflow_to_regengine_e2e.py:161", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in scripts/verify_inflow_to_regengine_e2e.py:161"}, "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-42530cece17120b4", "name": "Stub function `_local_subscription` (body is just `pass`/`return`) \u2014 scripts/verify_inflow_to_regengine_e2e.py:180", "shortDescription": {"text": "Stub function `_local_subscription` (body is just `pass`/`return`) \u2014 scripts/verify_inflow_to_regengine_e2e.py:180"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1300170cb8f18f1b", "name": "Legacy-named symbol `doc_v1` in scripts/demo_freshness.py:106", "shortDescription": {"text": "Legacy-named symbol `doc_v1` in scripts/demo_freshness.py:106"}, "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-ae600e4a7966c5dc", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/sentinel-backfill.py:79", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/sentinel-backfill.py:79"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd0f807bc64f16bf", "name": "Legacy-named symbol `seed_v1` in scripts/seed_v1_data.py:25", "shortDescription": {"text": "Legacy-named symbol `seed_v1` in scripts/seed_v1_data.py:25"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3008642a6824ed05", "name": "Commented-code block (5 lines) in scripts/check_tenant_id_uuid_only.py:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check_tenant_id_uuid_only.py:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6932b301ebc8a525", "name": "Legacy-named symbol `nLegacy` in scripts/check_legacy_dead_code.py:479", "shortDescription": {"text": "Legacy-named symbol `nLegacy` in scripts/check_legacy_dead_code.py:479"}, "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-b357ff8d3c3c69da", "name": "Commented-code block (5 lines) in scripts/verify_production_readiness.py:315", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/verify_production_readiness.py:315"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04910efc1ffe49cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e_tests.js:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e_tests.js:83"}, "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-b8bea3c99a98eae3", "name": "Commented-code block (8 lines) in scripts/e2e_brutal_scenario.py:78", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/e2e_brutal_scenario.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d69120b8aac987e", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/e2e_brutal_scenario.py:168", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/e2e_brutal_scenario.py:168"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-00af0d3bd103695b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed_demo.js:155", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed_demo.js:155"}, "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-bf9dccdfd9dfa742", "name": "Commented-code block (5 lines) in scripts/scheduler/fsma_auto_ingest.py:276", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scheduler/fsma_auto_ingest.py:276"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f9706b8110563bc", "name": "Legacy-named symbol `webhook_router_v2` in server/main.py:211", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in server/main.py:211"}, "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-f0075ed42b9debaa", "name": "Commented-code block (6 lines) in server/main.py:90", "shortDescription": {"text": "Commented-code block (6 lines) in server/main.py:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6462467a44a1ac8c", "name": "Commented-code block (5 lines) in server/workers/embedded_scheduler.py:75", "shortDescription": {"text": "Commented-code block (5 lines) in server/workers/embedded_scheduler.py:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8463aa1615e48ffa", "name": "Commented-code block (7 lines) in server/workers/task_processor.py:44", "shortDescription": {"text": "Commented-code block (7 lines) in server/workers/task_processor.py:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8bf2e350d65188b0", "name": "Commented-code block (7 lines) in services/nlp/app/resolution.py:73", "shortDescription": {"text": "Commented-code block (7 lines) in services/nlp/app/resolution.py:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e4f53ccab37c57d", "name": "Commented-code block (6 lines) in services/nlp/app/extractors/llm_extractor.py:19", "shortDescription": {"text": "Commented-code block (6 lines) in services/nlp/app/extractors/llm_extractor.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a04a43c63832a8aa", "name": "Stub function `generate` (body is just `pass`/`return`) \u2014 services/nlp/app/extractors/llm_extractor.py:253", "shortDescription": {"text": "Stub function `generate` (body is just `pass`/`return`) \u2014 services/nlp/app/extractors/llm_extractor.py:253"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef2b151b5c2c434b", "name": "Commented-code block (14 lines) in services/nlp/app/extractors/fsma_extractor/entity_resolution.py:88", "shortDescription": {"text": "Commented-code block (14 lines) in services/nlp/app/extractors/fsma_extractor/entity_resolution.py:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8e23961d20d60d6", "name": "Commented-code block (8 lines) in services/nlp/app/extractors/fsma_extractor/classification.py:9", "shortDescription": {"text": "Commented-code block (8 lines) in services/nlp/app/extractors/fsma_extractor/classification.py:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a925aedc46d35bc", "name": "Commented-code block (6 lines) in services/nlp/app/extractors/fsma_extractor/patterns.py:37", "shortDescription": {"text": "Commented-code block (6 lines) in services/nlp/app/extractors/fsma_extractor/patterns.py:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42dd37f47d2ff0f6", "name": "Commented-code block (5 lines) in services/nlp/app/extractors/fsma_extractor/cte_builder.py:40", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/extractors/fsma_extractor/cte_builder.py:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f8fc12b4176403e", "name": "Legacy-named symbol `signed_legacy` in services/nlp/app/consumer/__init__.py:853", "shortDescription": {"text": "Legacy-named symbol `signed_legacy` in services/nlp/app/consumer/__init__.py:853"}, "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-83d9587effede756", "name": "Commented-code block (5 lines) in services/nlp/app/consumer/__init__.py:162", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/__init__.py:162"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cce06ea3de2dd43f", "name": "Commented-code block (5 lines) in services/nlp/app/consumer/health.py:29", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/health.py:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0fc6ca74fb8f09b", "name": "Commented-code block (5 lines) in services/nlp/app/consumer/constants.py:24", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/constants.py:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e2facfcb8a93f7ef", "name": "Legacy-named symbol `legacy_regex_v1` in services/nlp/app/consumer/conversion.py:192", "shortDescription": {"text": "Legacy-named symbol `legacy_regex_v1` in services/nlp/app/consumer/conversion.py:192"}, "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-77956cac9f985380", "name": "Commented-code block (5 lines) in services/nlp/app/consumer/conversion.py:73", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/conversion.py:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80ca2273ae7b5f1d", "name": "Legacy-named symbol `nlp_model_v1` in services/nlp/app/consumer/review_routing.py:85", "shortDescription": {"text": "Legacy-named symbol `nlp_model_v1` in services/nlp/app/consumer/review_routing.py:85"}, "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-d967b36b96e2a8b5", "name": "Commented-code block (5 lines) in services/nlp/app/consumer/thresholds.py:15", "shortDescription": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/thresholds.py: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-d76cc82d16bfc39e", "name": "Commented-code block (6 lines) in services/nlp/app/consumer/tenancy.py:64", "shortDescription": {"text": "Commented-code block (6 lines) in services/nlp/app/consumer/tenancy.py: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-99384d639d50b4f5", "name": "Commented-code block (8 lines) in services/shared/database.py:101", "shortDescription": {"text": "Commented-code block (8 lines) in services/shared/database.py:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1f52687e06fbfdd", "name": "Commented-code block (7 lines) in services/shared/api_key_store.py:123", "shortDescription": {"text": "Commented-code block (7 lines) in services/shared/api_key_store.py:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3d15b3739724a9c", "name": "Commented-code block (6 lines) in services/shared/kafka_auth.py:140", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/kafka_auth.py:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a40fe35b5558a4a", "name": "Commented-code block (5 lines) in services/shared/canonical_event.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/canonical_event.py:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5813e6b013c96126", "name": "Commented-code block (5 lines) in services/shared/tenant_settings.py:32", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/tenant_settings.py: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-23428bb7158a7254", "name": "Commented-code block (6 lines) in services/shared/idempotency.py:35", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/idempotency.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3385b65043f6f169", "name": "Commented-code block (5 lines) in services/shared/neo4j_tenant_context.py:55", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/neo4j_tenant_context.py:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-888e25b2dabf4849", "name": "Commented-code block (6 lines) in services/shared/tenant_context.py:317", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/tenant_context.py:317"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4269c5f821bca886", "name": "Commented-code block (9 lines) in services/shared/pii.py:70", "shortDescription": {"text": "Commented-code block (9 lines) in services/shared/pii.py:70"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e8bff04e4371c2", "name": "Legacy-named symbol `dual_write_legacy` in services/shared/tests/test_legacy_dual_write_rename_1293.py:25", "shortDescription": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/tests/test_legacy_dual_write_rename_1293.py:25"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-432af8f73139fb73", "name": "Legacy-named symbol `test_old_payload_without_schema_version_parses_as_v1` in services/shared/tests/test_canonical_event", "shortDescription": {"text": "Legacy-named symbol `test_old_payload_without_schema_version_parses_as_v1` in services/shared/tests/test_canonical_event_schema_version_1197.py:173"}, "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-003474d5c52240cc", "name": "Legacy-named symbol `test_mixed_per_service_and_legacy` in services/shared/tests/test_kafka_auth_kid.py:165", "shortDescription": {"text": "Legacy-named symbol `test_mixed_per_service_and_legacy` in services/shared/tests/test_kafka_auth_kid.py:165"}, "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-d96a2578a627bada", "name": "Legacy-named symbol `webhook_router_v2` in services/shared/tests/test_rules_enforcement_manifest.py:106", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/tests/test_rules_enforcement_manifest.py:106"}, "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-394b3833b10ba109", "name": "Commented-code block (5 lines) in services/shared/middleware/security.py:15", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/middleware/security.py: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-9b43ffc6f79c60c6", "name": "Commented-code block (5 lines) in services/shared/rules/engine.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/rules/engine.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-271b72b345ce5756", "name": "Legacy-named symbol `webhook_router_v2` in services/shared/rules/enforcement.py:57", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/rules/enforcement.py:57"}, "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-c11066e776f8d749", "name": "Commented-code block (8 lines) in services/shared/rules/enforcement.py:41", "shortDescription": {"text": "Commented-code block (8 lines) in services/shared/rules/enforcement.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08ef9e2a366e9438", "name": "Commented-code block (6 lines) in services/shared/identity_resolution/constants.py:27", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/constants.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9efab88654a6cbb5", "name": "Commented-code block (6 lines) in services/shared/identity_resolution/normalization.py:15", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/normalization.py: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-449d960c077bc0aa", "name": "Commented-code block (5 lines) in services/shared/identity_resolution/merging.py:123", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/identity_resolution/merging.py:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77e74249ed83f771", "name": "Commented-code block (6 lines) in services/shared/identity_resolution/matching.py:125", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/matching.py:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bebf5530a886f809", "name": "Commented-code block (5 lines) in services/shared/identity_resolution/review.py:99", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/identity_resolution/review.py:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f336c78b04737af", "name": "Commented-code block (6 lines) in services/shared/identity_resolution/resolver.py:249", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/resolver.py:249"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6667923da736bcbe", "name": "Commented-code block (6 lines) in services/shared/identity_resolution/service.py:56", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/service.py:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22ff92e502894fda", "name": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/legacy_dual_write.py:14", "shortDescription": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/legacy_dual_write.py:14"}, "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-293c23a3528dce94", "name": "Commented-code block (6 lines) in services/shared/canonical_persistence/legacy_dual_write.py:212", "shortDescription": {"text": "Commented-code block (6 lines) in services/shared/canonical_persistence/legacy_dual_write.py:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef9259172bf973d5", "name": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/writer.py:340", "shortDescription": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/writer.py:340"}, "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-1806e60426e9064e", "name": "Commented-code block (9 lines) in services/shared/canonical_persistence/writer.py:588", "shortDescription": {"text": "Commented-code block (9 lines) in services/shared/canonical_persistence/writer.py:588"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf09f46e472e1b2b", "name": "Commented-code block (5 lines) in services/shared/cte_persistence/verification.py:156", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/verification.py:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3d5f95c9e30338d", "name": "Commented-code block (5 lines) in services/shared/cte_persistence/hashing.py:36", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/hashing.py:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf8e0a5a52ad070a", "name": "Commented-code block (5 lines) in services/shared/cte_persistence/batch.py:77", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/batch.py:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-911995dc45904c4d", "name": "Commented-code block (7 lines) in services/shared/cte_persistence/queries.py:30", "shortDescription": {"text": "Commented-code block (7 lines) in services/shared/cte_persistence/queries.py:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e026973e91cdf69f", "name": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/core.py:8", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/core.py: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-bebe44d58a2de03f", "name": "Commented-code block (8 lines) in services/shared/cte_persistence/core.py:4", "shortDescription": {"text": "Commented-code block (8 lines) in services/shared/cte_persistence/core.py: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-58ca1977d221532d", "name": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/tests/test_append_only_1334_1335.py:9", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/tests/test_append_only_1334_1335.py:9"}, "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-0bb7704e849b87e6", "name": "Commented-code block (5 lines) in services/shared/fda_export/windows.py:67", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/fda_export/windows.py:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3c8450f4584ab12e", "name": "Commented-code block (5 lines) in services/shared/fda_export/pii.py:41", "shortDescription": {"text": "Commented-code block (5 lines) in services/shared/fda_export/pii.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fafd006476579269", "name": "Commented-code block (6 lines) in services/compliance/app/routes.py:36", "shortDescription": {"text": "Commented-code block (6 lines) in services/compliance/app/routes.py:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-302f7b094994dcd6", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/main.py:131", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/main.py:131"}, "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-ba18e3a26d0c0a06", "name": "Commented-code block (5 lines) in services/ingestion/main.py:139", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/main.py:139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-378f207c6b54beb7", "name": "Legacy-named symbol `cs_old` in services/ingestion/tests/test_stripe_customers_1342.py:407", "shortDescription": {"text": "Legacy-named symbol `cs_old` in services/ingestion/tests/test_stripe_customers_1342.py:407"}, "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-4f400d1f7974b6b4", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_customers_1342.py:301", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_customers_1342.py:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b101215a53ab9a7c", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_gln_check_digit.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_gln_check_digit.py: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-23f4e797dbbf7d20", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_validation_1342.py:522", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_validation_1342.py:522"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0945238a7f4f0e8c", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_pipeline_1342.py:454", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_pipeline_1342.py:454"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85842332721c5982", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_trailing_lows_infos.py:32", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_trailing_lows_infos.py:32"}, "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-9f3fff1916a8f119", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_enforcement.py:2", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_enforcement.py:2"}, "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-d2555213761bd8d9", "name": "Commented-code block (7 lines) in services/ingestion/tests/test_epcis_persistence_1342.py:54", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_epcis_persistence_1342.py: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-89f198f0290d5213", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_proof_recall_router.py:89", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_proof_recall_router.py:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dac92dec0911fde", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_canonical_router_1342.py:465", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_canonical_router_1342.py:465"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32a79f8291e12109", "name": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/tests/test_stripe_routes_1342.py:445", "shortDescription": {"text": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/tests/test_stripe_routes_1342.py:445"}, "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-4de375b0b8db3ee8", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_1342.py:1", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_1342.py:1"}, "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-3c1ceea8b4c27388", "name": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_formatters_1342.py:101", "shortDescription": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_formatters_1342.py:101"}, "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-09f2c4aa7a175821", "name": "Commented-code block (9 lines) in services/ingestion/tests/test_identity_router.py:112", "shortDescription": {"text": "Commented-code block (9 lines) in services/ingestion/tests/test_identity_router.py:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5a59200d4a7a005", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_helpers_1342.py:140", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_helpers_1342.py:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a52acc5895ffc0c8", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_models_ssrf_1342.py:265", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_models_ssrf_1342.py:265"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e8f9a08293d572f", "name": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_service_1342.py:18", "shortDescription": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_service_1342.py:18"}, "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-04eb09119cb885d0", "name": "Legacy-named symbol `sub_bad_old` in services/ingestion/tests/test_stripe_state_1342.py:441", "shortDescription": {"text": "Legacy-named symbol `sub_bad_old` in services/ingestion/tests/test_stripe_state_1342.py:441"}, "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-a06951f5a9b4b4ee", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_inflow_lab_contract.py:7", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_inflow_lab_contract.py:7"}, "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-b0baf422589016ca", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_router_1342.py:80", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_router_1342.py:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e6ffa53989daa7", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_canonical_helper.py:28", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_canonical_helper.py:28"}, "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-80df8be79a3af562", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_rate_limit.py:14", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_rate_limit.py:14"}, "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-dbba69426c607d1f", "name": "Legacy-named symbol `export_fda_spreadsheet_v2` in services/ingestion/tests/test_fda_export_router_1342.py:15", "shortDescription": {"text": "Legacy-named symbol `export_fda_spreadsheet_v2` in services/ingestion/tests/test_fda_export_router_1342.py:15"}, "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-87bd3b2bb97a0b78", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_fda_export_router_1342.py:159", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_fda_export_router_1342.py:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e39e1f3f0ac471b", "name": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/tests/test_fda_export_pii_redaction.py:49", "shortDescription": {"text": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/tests/test_fda_export_pii_redaction.py:49"}, "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-d4a8ea430bcec41e", "name": "Legacy-named symbol `api_v2` in services/ingestion/tests/test_fda_export_queries_1342.py:883", "shortDescription": {"text": "Legacy-named symbol `api_v2` in services/ingestion/tests/test_fda_export_queries_1342.py:883"}, "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-bab0eff4df2fdf1c", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_fda_export_queries_1342.py:438", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_fda_export_queries_1342.py:438"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14da912fc1c5aac5", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_validation_1342.py:425", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_validation_1342.py:425"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5aab9a9a70bc8290", "name": "Legacy-named symbol `events_v1` in services/ingestion/tests/test_cte_persistence_e2e.py:716", "shortDescription": {"text": "Legacy-named symbol `events_v1` in services/ingestion/tests/test_cte_persistence_e2e.py:716"}, "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-6ee90a8171d6b161", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_funnel_events.py:17", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_funnel_events.py:17"}, "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-8ea43e6fd7aac302", "name": "Commented-code block (6 lines) in services/ingestion/tests/test_edi_parser_segment_cap_1171.py:126", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_edi_parser_segment_cap_1171.py:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3936d92034c7004d", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_idor_f1.py:31", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_idor_f1.py:31"}, "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-08bfaef555bd7ec8", "name": "Legacy-named symbol `test_send_link_db_read_ok_write_fails_with_no_memory_copy` in services/ingestion/tests/test_supplie", "shortDescription": {"text": "Legacy-named symbol `test_send_link_db_read_ok_write_fails_with_no_memory_copy` in services/ingestion/tests/test_supplier_mgmt_1342.py:354"}, "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-7d2263799482ecba", "name": "Commented-code block (8 lines) in services/ingestion/tests/test_recall_report_1342.py:81", "shortDescription": {"text": "Commented-code block (8 lines) in services/ingestion/tests/test_recall_report_1342.py:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a270efd8df6c838", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_replay_metric.py:29", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_replay_metric.py:29"}, "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-9c92915e4835ffcf", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_verify_api_key_1888.py:1", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_verify_api_key_1888.py:1"}, "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-ed9d65c40a822a02", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_hmac_and_replay.py:26", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_hmac_and_replay.py:26"}, "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-c6d3252d5589f44b", "name": "Legacy-named symbol `list_objects_v2` in services/ingestion/tests/test_s3_utils_1342.py:111", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/tests/test_s3_utils_1342.py:111"}, "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-0bcf69fed9293072", "name": "Commented-code block (7 lines) in services/ingestion/tests/test_smoke_ingestion.py:27", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_smoke_ingestion.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5225df665d12c974", "name": "Commented-code block (7 lines) in services/ingestion/tests/test_qr_decoder_1342.py:180", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_qr_decoder_1342.py:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4adbe48f2d849741", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_plans_1342.py:180", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_plans_1342.py:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6b9d0844358e144", "name": "Commented-code block (7 lines) in services/ingestion/tests/test_task_handlers_regulation_1342.py:65", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_task_handlers_regulation_1342.py:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dd8c0a2e4a21318", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_dual_write_timeout_1335.py:16", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_dual_write_timeout_1335.py:16"}, "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-480a53a1d04aa506", "name": "Commented-code block (5 lines) in services/ingestion/tests/test_state_generic_scraper_1342.py:309", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_state_generic_scraper_1342.py:309"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79f8623abe37d01f", "name": "Network/subprocess call without timeout or try/except \u2014 services/ingestion/scripts/verify_stripe_billing_e2e.py:141", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 services/ingestion/scripts/verify_stripe_billing_e2e.py:141"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20ff0d7fd31c8407", "name": "Legacy-named symbol `list_objects_v2` in services/ingestion/scripts/verify_pipeline.py:53", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/scripts/verify_pipeline.py:53"}, "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-12cdf55d2da17877", "name": "Commented-code block (6 lines) in services/ingestion/app/routes.py:23", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/routes.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-765484e36cdda4cf", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/exception_router.py:37", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/exception_router.py:37"}, "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-f3d7dcf3f754a960", "name": "Commented-code block (5 lines) in services/ingestion/app/canonical_router.py:453", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/canonical_router.py:453"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d97fcfcd5154e35a", "name": "Commented-code block (6 lines) in services/ingestion/app/compliance_score.py:123", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/compliance_score.py:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af4324dd7f7a11fd", "name": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/app/fda_export_service.py:786", "shortDescription": {"text": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/app/fda_export_service.py:786"}, "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-986f776891e3f36d", "name": "Commented-code block (7 lines) in services/ingestion/app/fda_export_service.py:86", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/fda_export_service.py:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52d2c726c471ed83", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_compat.py:7", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_compat.py:7"}, "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-053e958385bff71f", "name": "Commented-code block (7 lines) in services/ingestion/app/webhook_compat.py:187", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_compat.py:187"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2002abd630ba1254", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/identity_router.py:36", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/identity_router.py:36"}, "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-2bb67b5ebb99f65f", "name": "Legacy-named symbol `ingesting_regulation_v2` in services/ingestion/app/regulation_loader.py:201", "shortDescription": {"text": "Legacy-named symbol `ingesting_regulation_v2` in services/ingestion/app/regulation_loader.py:201"}, "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-12b5b4aab07facbe", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/request_workflow_router.py:39", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/request_workflow_router.py:39"}, "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-87260884c269280c", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/routes_health_metrics.py:59", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/routes_health_metrics.py:59"}, "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-c65da02e03a6c5d5", "name": "Commented-code block (6 lines) in services/ingestion/app/authz.py:182", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/authz.py:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a134bb88615d6b97", "name": "Legacy-named symbol `model_copy` in services/ingestion/app/integration_router.py:420", "shortDescription": {"text": "Legacy-named symbol `model_copy` in services/ingestion/app/integration_router.py:420"}, "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-10da59360e125577", "name": "Commented-code block (8 lines) in services/ingestion/app/exchange_api.py:498", "shortDescription": {"text": "Commented-code block (8 lines) in services/ingestion/app/exchange_api.py:498"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0194fa07826033f5", "name": "Legacy-named symbol `list_objects_v2` in services/ingestion/app/s3_utils.py:369", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/app/s3_utils.py:369"}, "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-401ea20dd83fa0a4", "name": "Commented-code block (5 lines) in services/ingestion/app/kafka_utils.py:93", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/kafka_utils.py:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4023f8e7b71cf189", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/middleware/ratelimit_headers.py:10", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/middleware/ratelimit_headers.py:10"}, "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-611bc396139c34ac", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/routes.py:3", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/routes.py:3"}, "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-9798c25caa32be95", "name": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/routes.py:280", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/routes.py:280"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df08ee9bf0103b56", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/metrics.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/metrics.py:4"}, "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-364871b1519589d2", "name": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/metrics.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/metrics.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-933660afacf11350", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/__init__.py:13", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/__init__.py:13"}, "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-1c4ba3c95a921fd7", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/rules_eval.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/rules_eval.py:4"}, "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-320a9e9e0a5a8721", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/validation.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/validation.py:4"}, "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-034f7b53eb648d77", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/ratelimit.py:3", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/ratelimit.py:3"}, "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-04747e41f68bc278", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/tenant.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/tenant.py:4"}, "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-34a4d171e70220d2", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/graph_sync.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/graph_sync.py:4"}, "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-9fa1ddc1d12ee5d2", "name": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/graph_sync.py:74", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/graph_sync.py:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73b083396188a94f", "name": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/security.py:4", "shortDescription": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/security.py:4"}, "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-457221bf340561ae", "name": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/security.py:82", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/security.py:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76db785eba0aa831", "name": "Commented-code block (5 lines) in services/ingestion/app/epcis/normalization.py:26", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/epcis/normalization.py:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1f0e55adba9ba64", "name": "Commented-code block (6 lines) in services/ingestion/app/epcis/persistence.py:39", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/epcis/persistence.py:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b5828e3a0bd11c6", "name": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/app/stripe_billing/routes.py:343", "shortDescription": {"text": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/app/stripe_billing/routes.py:343"}, "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-2724052cc3c1fd78", "name": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/routes.py:109", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/routes.py:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6adb8a5c4fa25e8", "name": "Legacy-named symbol `create_portal_session_legacy` in services/ingestion/app/stripe_billing/__init__.py:72", "shortDescription": {"text": "Legacy-named symbol `create_portal_session_legacy` in services/ingestion/app/stripe_billing/__init__.py:72"}, "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-8d347a72476fffef", "name": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/__init__.py:179", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/__init__.py:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08355da7359b0041", "name": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/rate_limiting.py:53", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/rate_limiting.py:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a20ba980ee558f4", "name": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/webhooks.py:53", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/webhooks.py:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49c88ce1320e2bb8", "name": "Commented-code block (7 lines) in services/ingestion/app/stripe_billing/helpers.py:28", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/stripe_billing/helpers.py:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-386ccc0da8be1437", "name": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/state.py:16", "shortDescription": {"text": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/state.py:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9978c592f911b2ce", "name": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/router.py:46", "shortDescription": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/router.py:46"}, "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-78fb55bdfd807991", "name": "Commented-code block (5 lines) in services/ingestion/app/fda_export/router.py:302", "shortDescription": {"text": "Commented-code block (5 lines) in services/ingestion/app/fda_export/router.py:302"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-783bbdca503aa110", "name": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/formatters.py:20", "shortDescription": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/formatters.py:20"}, "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-e72a727c6d978616", "name": "Legacy-named symbol `api_v2` in services/ingestion/app/fda_export/queries.py:469", "shortDescription": {"text": "Legacy-named symbol `api_v2` in services/ingestion/app/fda_export/queries.py:469"}, "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-5e72edba90ccb641", "name": "Commented-code block (7 lines) in services/ingestion/app/fda_export/queries.py:233", "shortDescription": {"text": "Commented-code block (7 lines) in services/ingestion/app/fda_export/queries.py:233"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74c4d8727cbecf4a", "name": "Commented-code block (10 lines) in services/ingestion/app/edi_ingestion/routes.py:773", "shortDescription": {"text": "Commented-code block (10 lines) in services/ingestion/app/edi_ingestion/routes.py:773"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5c8775acaebf787", "name": "Legacy-named symbol `naive_old` in services/admin/tests/test_graph_outbox_1342.py:279", "shortDescription": {"text": "Legacy-named symbol `naive_old` in services/admin/tests/test_graph_outbox_1342.py:279"}, "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-635765b984f47fde", "name": "Commented-code block (5 lines) in services/admin/tests/test_transaction_manager_1342.py:92", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_transaction_manager_1342.py:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff8eb15dd756a27c", "name": "Commented-code block (5 lines) in services/admin/tests/test_webhook_outbox_1408.py:884", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_webhook_outbox_1408.py:884"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-288c2d8c647b53f3", "name": "Commented-code block (5 lines) in services/admin/tests/test_mfa_1342.py:280", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_mfa_1342.py:280"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2b613eccec3ace5", "name": "Commented-code block (7 lines) in services/admin/tests/test_get_current_user_tenant_required.py:60", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/tests/test_get_current_user_tenant_required.py:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24fc9082a0a1e7c6", "name": "Legacy-named symbol `_hash_v2` in services/admin/tests/test_audit_integrity_1342.py:47", "shortDescription": {"text": "Legacy-named symbol `_hash_v2` in services/admin/tests/test_audit_integrity_1342.py:47"}, "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-2ca9431d41988000", "name": "Legacy-named symbol `rge_legacy` in services/admin/tests/test_review_hardening.py:515", "shortDescription": {"text": "Legacy-named symbol `rge_legacy` in services/admin/tests/test_review_hardening.py:515"}, "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-dae2da1ebf385b0c", "name": "Commented-code block (7 lines) in services/admin/tests/test_bulk_upload_graph_sync_wiring.py:399", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/tests/test_bulk_upload_graph_sync_wiring.py:399"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f98775fbe884740a", "name": "Commented-code block (5 lines) in services/admin/tests/test_signup_session_rollback.py:295", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_signup_session_rollback.py:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4871dec41fe5039e", "name": "Commented-code block (5 lines) in services/admin/tests/test_get_current_user_tenant_source.py:129", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_get_current_user_tenant_source.py:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90d8e96362a266ad", "name": "Commented-code block (5 lines) in services/admin/tests/test_supplier_onboarding_routes.py:120", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_supplier_onboarding_routes.py:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3d42a3f15787053", "name": "Commented-code block (5 lines) in services/admin/tests/test_compliance_routes_idor.py:193", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_compliance_routes_idor.py:193"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fbf30c5fd34e816", "name": "Commented-code block (5 lines) in services/admin/tests/test_lead_erasure_1095.py:55", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/tests/test_lead_erasure_1095.py:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cff96600c74560a6", "name": "Legacy-named symbol `recomputed_v2` in services/admin/app/audit_integrity.py:91", "shortDescription": {"text": "Legacy-named symbol `recomputed_v2` in services/admin/app/audit_integrity.py:91"}, "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-f655ffd38f7970f1", "name": "Commented-code block (6 lines) in services/admin/app/review_consumer.py:171", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/review_consumer.py:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03002045731ed1d2", "name": "Commented-code block (7 lines) in services/admin/app/database.py:94", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/database.py:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15edd96679a7b64b", "name": "Commented-code block (5 lines) in services/admin/app/metrics.py:270", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/metrics.py:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47d0881be8cae775", "name": "Commented-code block (5 lines) in services/admin/app/password_reset_routes.py:73", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/password_reset_routes.py:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e2edd3c5d746516", "name": "Commented-code block (5 lines) in services/admin/app/supplier_funnel_routes.py:54", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/supplier_funnel_routes.py: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-18263356b8104b42", "name": "Commented-code block (5 lines) in services/admin/app/data_export_routes.py:315", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/data_export_routes.py:315"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-66b6a0dc4a7b23de", "name": "Commented-code block (5 lines) in services/admin/app/dependencies.py:179", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/dependencies.py:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-717ddf75582bc684", "name": "Commented-code block (5 lines) in services/admin/app/text_sanitize.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/text_sanitize.py:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bdf567024d9d374", "name": "Commented-code block (6 lines) in services/admin/app/tenant_settings_routes.py:100", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/tenant_settings_routes.py:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bee03cf98770eb08", "name": "Commented-code block (6 lines) in services/admin/app/tool_verification_routes.py:363", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/tool_verification_routes.py:363"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7deb941f0bbba8fa", "name": "Commented-code block (7 lines) in services/admin/app/supplier_graph_sync.py:474", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/supplier_graph_sync.py:474"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c30dd152b3fbb66d", "name": "Commented-code block (7 lines) in services/admin/app/review_routes.py:166", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/review_routes.py:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bda4ff426027a34b", "name": "Commented-code block (7 lines) in services/admin/app/mfa.py:638", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/mfa.py:638"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93d2bce9187d6fa9", "name": "Commented-code block (7 lines) in services/admin/app/auth_utils.py:56", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/auth_utils.py:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5dce918ccba1133c", "name": "Commented-code block (7 lines) in services/admin/app/erasure_routes.py:158", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/erasure_routes.py:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46832730820d9000", "name": "Commented-code block (8 lines) in services/admin/app/audit.py:224", "shortDescription": {"text": "Commented-code block (8 lines) in services/admin/app/audit.py:224"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dbb3ec31133d9c7", "name": "Commented-code block (7 lines) in services/admin/app/auth/signup_router.py:208", "shortDescription": {"text": "Commented-code block (7 lines) in services/admin/app/auth/signup_router.py:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa7027317f593b42", "name": "Commented-code block (8 lines) in services/admin/app/auth/login_router.py:78", "shortDescription": {"text": "Commented-code block (8 lines) in services/admin/app/auth/login_router.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a94ef0cce762800", "name": "Commented-code block (8 lines) in services/admin/app/auth/confirm_router.py:179", "shortDescription": {"text": "Commented-code block (8 lines) in services/admin/app/auth/confirm_router.py:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9df8c4e1b70fbd43", "name": "Commented-code block (6 lines) in services/admin/app/auth/reset_password_router.py:45", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/auth/reset_password_router.py:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-142a43c5815f7354", "name": "Commented-code block (5 lines) in services/admin/app/auth/refresh_router.py:65", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/auth/refresh_router.py:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-112fdacb3bac06a4", "name": "Commented-code block (6 lines) in services/admin/app/auth/change_password_router.py:75", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/auth/change_password_router.py:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51e9d5af14e81ef2", "name": "Commented-code block (5 lines) in services/admin/app/bulk_upload/transaction_manager.py:367", "shortDescription": {"text": "Commented-code block (5 lines) in services/admin/app/bulk_upload/transaction_manager.py:367"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f46a37f8b46b981", "name": "Commented-code block (6 lines) in services/admin/app/bulk_upload/routes.py:234", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/bulk_upload/routes.py:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20a604880e074b5d", "name": "Commented-code block (6 lines) in services/admin/app/bulk_upload/session_store.py:25", "shortDescription": {"text": "Commented-code block (6 lines) in services/admin/app/bulk_upload/session_store.py:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b6f847c2f11fcfe", "name": "Commented-code block (5 lines) in services/scheduler/service.py:105", "shortDescription": {"text": "Commented-code block (5 lines) in services/scheduler/service.py:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34de6d945fcb70cb", "name": "Commented-code block (8 lines) in services/scheduler/tests/test_safe_http_guardrail.py:20", "shortDescription": {"text": "Commented-code block (8 lines) in services/scheduler/tests/test_safe_http_guardrail.py:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c360b03f53df7312", "name": "Legacy-named symbol `test_get_dead_letters_returns_copy` in services/scheduler/tests/test_notifications.py:176", "shortDescription": {"text": "Legacy-named symbol `test_get_dead_letters_returns_copy` in services/scheduler/tests/test_notifications.py:176"}, "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-9394a3c275b010bb", "name": "Commented-code block (7 lines) in services/scheduler/app/notifications.py:28", "shortDescription": {"text": "Commented-code block (7 lines) in services/scheduler/app/notifications.py:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e140ad53a908167", "name": "Commented-code block (7 lines) in services/scheduler/app/distributed.py:24", "shortDescription": {"text": "Commented-code block (7 lines) in services/scheduler/app/distributed.py:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-709a99efb9249652", "name": "Commented-code block (5 lines) in services/scheduler/app/config.py:99", "shortDescription": {"text": "Commented-code block (5 lines) in services/scheduler/app/config.py:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e867bbca3a56f352", "name": "Commented-code block (5 lines) in services/scheduler/app/compliance_integration.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in services/scheduler/app/compliance_integration.py:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93e183704fd12283", "name": "Commented-code block (5 lines) in services/scheduler/app/models.py:62", "shortDescription": {"text": "Commented-code block (5 lines) in services/scheduler/app/models.py:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3384830d86440f39", "name": "Commented-code block (10 lines) in services/scheduler/app/scrapers/fda_import_alerts.py:31", "shortDescription": {"text": "Commented-code block (10 lines) in services/scheduler/app/scrapers/fda_import_alerts.py:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fdafc5cedd569c7", "name": "Commented-code block (5 lines) in services/scheduler/app/scrapers/base.py:19", "shortDescription": {"text": "Commented-code block (5 lines) in services/scheduler/app/scrapers/base.py:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1496630125302d4", "name": "Commented-code block (5 lines) in services/graph/tests/test_neo4j_integration_testcontainers.py:6", "shortDescription": {"text": "Commented-code block (5 lines) in services/graph/tests/test_neo4j_integration_testcontainers.py: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-7fb2ac07c30bc064", "name": "Commented-code block (5 lines) in services/graph/app/overlay_resolver.py:89", "shortDescription": {"text": "Commented-code block (5 lines) in services/graph/app/overlay_resolver.py:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f22c078c3a29ddc", "name": "Commented-code block (6 lines) in services/graph/app/config.py:28", "shortDescription": {"text": "Commented-code block (6 lines) in services/graph/app/config.py:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51f523582b70f5ba", "name": "Commented-code block (6 lines) in services/graph/app/hierarchy_builder.py:62", "shortDescription": {"text": "Commented-code block (6 lines) in services/graph/app/hierarchy_builder.py:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b065cbeb05619f05", "name": "Commented-code block (7 lines) in services/graph/app/models/fsma_nodes.py:511", "shortDescription": {"text": "Commented-code block (7 lines) in services/graph/app/models/fsma_nodes.py:511"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-83cf9453cc683354", "name": "Commented-code block (6 lines) in services/graph/app/routers/lineage_traversal.py:63", "shortDescription": {"text": "Commented-code block (6 lines) in services/graph/app/routers/lineage_traversal.py:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b847f54cdd9d19ca", "name": "Commented-code block (9 lines) in services/graph/app/routers/fsma/compliance.py:987", "shortDescription": {"text": "Commented-code block (9 lines) in services/graph/app/routers/fsma/compliance.py:987"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a41284474c4f6e45", "name": "Commented-code block (5 lines) in services/graph/app/fsma/tracer.py:58", "shortDescription": {"text": "Commented-code block (5 lines) in services/graph/app/fsma/tracer.py:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62c15d250cf01494", "name": "Commented-code block (6 lines) in services/graph/app/fsma/data_quality.py:69", "shortDescription": {"text": "Commented-code block (6 lines) in services/graph/app/fsma/data_quality.py:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e930f6c4f4d4d2c1", "name": "Commented-code block (7 lines) in services/graph/app/fsma/queries.py:150", "shortDescription": {"text": "Commented-code block (7 lines) in services/graph/app/fsma/queries.py:150"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95ebd463a945f45e", "name": "Commented-code block (5 lines) in alembic/versions/20260324_97588ba8edf3_baseline_consolidate_v002_through_v042.py:35", "shortDescription": {"text": "Commented-code block (5 lines) in alembic/versions/20260324_97588ba8edf3_baseline_consolidate_v002_through_v042.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cca6e080ca6027d", "name": "Commented-code block (9 lines) in alembic/versions/20260415_v056_rls_hardening.py:136", "shortDescription": {"text": "Commented-code block (9 lines) in alembic/versions/20260415_v056_rls_hardening.py:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2316fc27b3b81e8", "name": "Commented-code block (7 lines) in alembic/versions/20260423_c7d8e9f0a1b2_v065_audit_logs_fix_uuid_columns.py:255", "shortDescription": {"text": "Commented-code block (7 lines) in alembic/versions/20260423_c7d8e9f0a1b2_v065_audit_logs_fix_uuid_columns.py:255"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0c8b476070fd126", "name": "Commented-code block (13 lines) in alembic/versions/20260424_e9f0a1b2c3d4_v067_tenant_id_uuid_standardization.py:84", "shortDescription": {"text": "Commented-code block (13 lines) in alembic/versions/20260424_e9f0a1b2c3d4_v067_tenant_id_uuid_standardization.py:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f26f200e0b01d840", "name": "Commented-code block (5 lines) in alembic/versions/20260424_abc565b7dc47_v069_v31_fsma_tenant_id_rls.py:97", "shortDescription": {"text": "Commented-code block (5 lines) in alembic/versions/20260424_abc565b7dc47_v069_v31_fsma_tenant_id_rls.py:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16ab3e7feb36eadd", "name": "241 env vars used in code but missing from .env.example", "shortDescription": {"text": "241 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_API_URL`, `ADMIN_DB_MAX_OVERFLOW`, `ADMIN_DB_POOL_SIZE`, `ADMIN_FALLBACK_SQLITE`, `ADMIN_SERVICE_URL`, `ALLOWED_ORIGINS`, `ALLOW_BILLING_STATE_READ_FALLBACK`, `ALLOW_DISABLE_COMPLIANCE_ROUTERS` + 233 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nregengine/swarm/llm.py:generate, regengine/swarm/llm.py:generate, regengine/swarm/llm.py:generate, regengine/swarm/llm.py:generate\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0027e313ade46c8f", "name": "Near-duplicate function bodies in 7 places", "shortDescription": {"text": "Near-duplicate function bodies in 7 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nregengine/swarm/agents.py:think, regengine/swarm/agents.py:think, regengine/swarm/agents.py:think, regengine/swarm/agents.py:think\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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:\nscripts/check_rls_fallback.py:iter_migration_files, scripts/check_tenant_id_uuid_only.py:iter_migration_files\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nservices/nlp/app/extractors/llm_extractor.py:generate, services/nlp/app/extractors/llm_extractor.py:generate, services/nlp/app/extractors/llm_extractor.py:generate, services/nlp/app/extractors/llm_extractor.py:generate\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nservices/shared/fsma_plan_builder.py:to_dict, services/shared/fsma_plan_builder.py:to_dict, services/shared/fsma_plan_builder.py:to_dict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-392f679b9c653c9b", "name": "FastAPI POST `import_sensitech` without auth dependency \u2014 services/ingestion/app/sensitech_parser.py:214", "shortDescription": {"text": "FastAPI POST `import_sensitech` without auth dependency \u2014 services/ingestion/app/sensitech_parser.py:214"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-769acc52d2c38478", "name": "FastAPI POST `verify_export` without auth dependency \u2014 services/ingestion/app/proof_verify_router.py:517", "shortDescription": {"text": "FastAPI POST `verify_export` without auth dependency \u2014 services/ingestion/app/proof_verify_router.py:517"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84b3dacb5f4c5269", "name": "FastAPI POST `evaluate_event` without auth dependency \u2014 services/ingestion/app/rules_router.py:180", "shortDescription": {"text": "FastAPI POST `evaluate_event` without auth dependency \u2014 services/ingestion/app/rules_router.py:180"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afa1627f3fc5ca0d", "name": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_webhook.py:104", "shortDescription": {"text": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_webhook.py:104"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cca9ebb7c67b84c6", "name": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_router.py:689", "shortDescription": {"text": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_router.py:689"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dd2fb90c69c132e", "name": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:304", "shortDescription": {"text": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:304"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f7e911bb5e4449b7", "name": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:310", "shortDescription": {"text": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:310"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a83f8aa78ed719fa", "name": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:581", "shortDescription": {"text": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:581"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55f3d8e77de56c11", "name": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:582", "shortDescription": {"text": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:582"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e91e8a87ae2bdbec", "name": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:656", "shortDescription": {"text": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:656"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7d137f6f6e8ade8", "name": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:657", "shortDescription": {"text": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:657"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bde340eb47d6f495", "name": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:738", "shortDescription": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:738"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47e41444f2dbad25", "name": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:739", "shortDescription": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:739"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c3f1ae97f736ffd", "name": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:740", "shortDescription": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:740"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7d1f2d09723dc6b", "name": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:741", "shortDescription": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:741"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41df258bc765b008", "name": "FastAPI POST `run_recall_drill` without auth dependency \u2014 services/ingestion/app/proof_recall_router.py:181", "shortDescription": {"text": "FastAPI POST `run_recall_drill` without auth dependency \u2014 services/ingestion/app/proof_recall_router.py:181"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e53c655fb1e1785", "name": "FastAPI POST `preflight_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:751", "shortDescription": {"text": "FastAPI POST `preflight_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:751"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d7495c0f4affd6d", "name": "FastAPI POST `submit_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:766", "shortDescription": {"text": "FastAPI POST `submit_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:766"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee073e4058fdec94", "name": "FastAPI POST `ingest_events` without auth dependency \u2014 services/ingestion/app/webhook_router_v2/routes.py:59", "shortDescription": {"text": "FastAPI POST `ingest_events` without auth dependency \u2014 services/ingestion/app/webhook_router_v2/routes.py:59"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efca73e52e855dd2", "name": "FastAPI POST `ingest_epcis_batch` without auth dependency \u2014 services/ingestion/app/epcis/router.py:102", "shortDescription": {"text": "FastAPI POST `ingest_epcis_batch` without auth dependency \u2014 services/ingestion/app/epcis/router.py:102"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-722ab7ba4dcda153", "name": "FastAPI POST `ingest_epcis_xml` without auth dependency \u2014 services/ingestion/app/epcis/router.py:298", "shortDescription": {"text": "FastAPI POST `ingest_epcis_xml` without auth dependency \u2014 services/ingestion/app/epcis/router.py:298"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d080b7e5bb744329", "name": "FastAPI POST `sandbox_evaluate` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:63", "shortDescription": {"text": "FastAPI POST `sandbox_evaluate` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:63"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-160bd893015b6f3b", "name": "FastAPI POST `sandbox_trace` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:255", "shortDescription": {"text": "FastAPI POST `sandbox_trace` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:255"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68634beb24cd1eae", "name": "FastAPI POST `sandbox_share` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:280", "shortDescription": {"text": "FastAPI POST `sandbox_share` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:280"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dcf3e3695c6d2e0", "name": "FastAPI POST `create_checkout` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:79", "shortDescription": {"text": "FastAPI POST `create_checkout` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:79"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d2742f0a6237c43", "name": "FastAPI POST `stripe_webhooks` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:323", "shortDescription": {"text": "FastAPI POST `stripe_webhooks` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:323"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eaf726279c482d8d", "name": "FastAPI POST `stripe_webhook_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:337", "shortDescription": {"text": "FastAPI POST `stripe_webhook_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:337"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-584531c83f134377", "name": "FastAPI POST `create_portal_session_for_tenant` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.p", "shortDescription": {"text": "FastAPI POST `create_portal_session_for_tenant` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:352"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf6ecc863c1a644e", "name": "FastAPI POST `create_portal_session_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:54", "shortDescription": {"text": "FastAPI POST `create_portal_session_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:545"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-643823d6c45fe087", "name": "FastAPI POST `ingest_edi_856` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:367", "shortDescription": {"text": "FastAPI POST `ingest_edi_856` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:367"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbb82205981eaad2", "name": "FastAPI POST `ingest_edi_document` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:670", "shortDescription": {"text": "FastAPI POST `ingest_edi_document` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:670"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf8a20c7d00ba3a7", "name": "FastAPI POST `verify_email` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:272", "shortDescription": {"text": "FastAPI POST `verify_email` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:272"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9d9e99d340a66fb", "name": "FastAPI POST `confirm_code` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:320", "shortDescription": {"text": "FastAPI POST `confirm_code` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:320"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5cf4aafc60aced8d", "name": "FastAPI POST `request_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:378", "shortDescription": {"text": "FastAPI POST `request_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:378"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3653e3e320037d0", "name": "FastAPI POST `confirm_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:398", "shortDescription": {"text": "FastAPI POST `confirm_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:398"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e25fe726ebd4f176", "name": "Dangling fetch: GET /api/search?q=${encodeURIComponent(payload)} (frontend/src/test/security/api-security.test.ts:36)", "shortDescription": {"text": "Dangling fetch: GET /api/search?q=${encodeURIComponent(payload)} (frontend/src/test/security/api-security.test.ts:36)"}, "fullDescription": {"text": "`frontend/src/test/security/api-security.test.ts:36` calls `GET /api/search?q=${encodeURIComponent(payload)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/search`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f1ab596c198a4a9", "name": "Dangling fetch: GET /api/test (frontend/src/test/security/api-security.test.ts:109)", "shortDescription": {"text": "Dangling fetch: GET /api/test (frontend/src/test/security/api-security.test.ts:109)"}, "fullDescription": {"text": "`frontend/src/test/security/api-security.test.ts:109` calls `GET /api/test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/test`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5c13f97713690b3", "name": "Dangling fetch: GET /api/protected (frontend/src/test/security/api-security.test.ts:123)", "shortDescription": {"text": "Dangling fetch: GET /api/protected (frontend/src/test/security/api-security.test.ts:123)"}, "fullDescription": {"text": "`frontend/src/test/security/api-security.test.ts:123` calls `GET /api/protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd319387b7cabb6f", "name": "Dangling fetch: GET /api/admin (frontend/src/test/security/api-security.test.ts:135)", "shortDescription": {"text": "Dangling fetch: GET /api/admin (frontend/src/test/security/api-security.test.ts:135)"}, "fullDescription": {"text": "`frontend/src/test/security/api-security.test.ts:135` calls `GET /api/admin` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d83830b8f825fb20", "name": "Dangling fetch: GET /api/fsma/lots (frontend/src/test/security/rbac.test.ts:29)", "shortDescription": {"text": "Dangling fetch: GET /api/fsma/lots (frontend/src/test/security/rbac.test.ts:29)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:29` calls `GET /api/fsma/lots` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fsma/lots`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b02b17e3427c32bb", "name": "Dangling fetch: DELETE /api/admin/users/delete/user-123 (frontend/src/test/security/rbac.test.ts:77)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/users/delete/user-123 (frontend/src/test/security/rbac.test.ts:77)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:77` calls `DELETE /api/admin/users/delete/user-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users/delete/user-123`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd0aaaff1af34083", "name": "Dangling fetch: GET /api/admin/settings (frontend/src/test/security/rbac.test.ts:97)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/test/security/rbac.test.ts:97)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:97` calls `GET /api/admin/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/settings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be1d4f2277c86f10", "name": "Dangling fetch: PUT /api/admin/users/current-user/role (frontend/src/test/security/rbac.test.ts:112)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/current-user/role (frontend/src/test/security/rbac.test.ts:112)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:112` calls `PUT /api/admin/users/current-user/role` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/users/current-user/role`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc00c1ffa0544aaf", "name": "Dangling fetch: GET /api/protected (frontend/src/test/security/rbac.test.ts:173)", "shortDescription": {"text": "Dangling fetch: GET /api/protected (frontend/src/test/security/rbac.test.ts:173)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:173` calls `GET /api/protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5578df05c538fae", "name": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:187)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:187)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:187` calls `DELETE /api/admin/delete-tenant` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/delete-tenant`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1398f98292eeb46f", "name": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:193)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:193)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:193` calls `DELETE /api/admin/delete-tenant` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/delete-tenant`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1212427ef5434712", "name": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:217)", "shortDescription": {"text": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:217)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:217` calls `PUT /api/users/123/role` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/users/<p>/role`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed8279829fab40c2", "name": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:221)", "shortDescription": {"text": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:221)"}, "fullDescription": {"text": "`frontend/src/test/security/rbac.test.ts:221` calls `PUT /api/users/123/role` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/users/<p>/role`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1105ce9dc8839b8", "name": "Dangling fetch: DELETE /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:88)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:88)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:88` calls `DELETE /api/admin/audit/log-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/audit/log-123`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-63dcb6d720fc6ec3", "name": "Dangling fetch: PUT /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:103)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:103)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:103` calls `PUT /api/admin/audit/log-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/audit/log-123`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-196ee188d3c516d3", "name": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:212)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:212)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:212` calls `POST /api/audit/log` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09d78b329d693fcc", "name": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:240)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:240)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:240` calls `POST /api/audit/log` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9730de0142a56f8", "name": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:262)", "shortDescription": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:262)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:262` calls `POST /api/audit/log` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/audit/log`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f059eeddd29e8d2e", "name": "Dangling fetch: POST /api/admin/audit/purge (frontend/src/test/security/audit-trail.test.ts:295)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/audit/purge (frontend/src/test/security/audit-trail.test.ts:295)"}, "fullDescription": {"text": "`frontend/src/test/security/audit-trail.test.ts:295` calls `POST /api/admin/audit/purge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/audit/purge`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43d802bb79ef56c6", "name": "Dangling fetch: POST /api/gdpr/erasure (frontend/src/test/compliance/data-protection.test.ts:45)", "shortDescription": {"text": "Dangling fetch: POST /api/gdpr/erasure (frontend/src/test/compliance/data-protection.test.ts:45)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:45` calls `POST /api/gdpr/erasure` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gdpr/erasure`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3821a8869b83b752", "name": "Dangling fetch: GET /api/gdpr/erasure/${initData.request_id} (frontend/src/test/compliance/data-protection.test.ts:55)", "shortDescription": {"text": "Dangling fetch: GET /api/gdpr/erasure/${initData.request_id} (frontend/src/test/compliance/data-protection.test.ts:55)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:55` calls `GET /api/gdpr/erasure/${initData.request_id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gdpr/erasure/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb7df7d1f54f672a", "name": "Dangling fetch: GET /api/gdpr/verify/${store} (frontend/src/test/compliance/data-protection.test.ts:78)", "shortDescription": {"text": "Dangling fetch: GET /api/gdpr/verify/${store} (frontend/src/test/compliance/data-protection.test.ts:78)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:78` calls `GET /api/gdpr/verify/${store}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gdpr/verify/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9320a8b4e6c2505f", "name": "Dangling fetch: GET /api/gdpr/audit-check/user-deleted (frontend/src/test/compliance/data-protection.test.ts:100)", "shortDescription": {"text": "Dangling fetch: GET /api/gdpr/audit-check/user-deleted (frontend/src/test/compliance/data-protection.test.ts:100)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:100` calls `GET /api/gdpr/audit-check/user-deleted` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/gdpr/audit-check/user-deleted`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-252fb06f6736a147", "name": "Dangling fetch: GET /api/compliance/data-residency/eu-user-001 (frontend/src/test/compliance/data-protection.test.ts:118", "shortDescription": {"text": "Dangling fetch: GET /api/compliance/data-residency/eu-user-001 (frontend/src/test/compliance/data-protection.test.ts:118)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:118` calls `GET /api/compliance/data-residency/eu-user-001` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/compliance/data-residency/eu-user-001`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52a94f400eb6f64e", "name": "Dangling fetch: POST /api/data/transfer (frontend/src/test/compliance/data-protection.test.ts:131)", "shortDescription": {"text": "Dangling fetch: POST /api/data/transfer (frontend/src/test/compliance/data-protection.test.ts:131)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:131` calls `POST /api/data/transfer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/transfer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e63ea8fb85e36ed5", "name": "Dangling fetch: POST /api/patients (frontend/src/test/compliance/data-protection.test.ts:181)", "shortDescription": {"text": "Dangling fetch: POST /api/patients (frontend/src/test/compliance/data-protection.test.ts:181)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:181` calls `POST /api/patients` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/patients`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12b5a191bad53f71", "name": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:212)", "shortDescription": {"text": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:212)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:212` calls `GET /api/patients/patient-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/patients/patient-123`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00f95dfe8ddca039", "name": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:227)", "shortDescription": {"text": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:227)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:227` calls `GET /api/patients/patient-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/patients/patient-123`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7620cf49e0c26405", "name": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:256)", "shortDescription": {"text": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:256)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:256` calls `GET /api/patients/123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/patients/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-15f8b4b4f5011a04", "name": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:263)", "shortDescription": {"text": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:263)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:263` calls `GET /api/patients/123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/patients/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c27f9f0e1090be6d", "name": "Dangling fetch: GET /api/payments/pay-001 (frontend/src/test/compliance/data-protection.test.ts:301)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/pay-001 (frontend/src/test/compliance/data-protection.test.ts:301)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:301` calls `GET /api/payments/pay-001` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/payments/pay-001`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05044f21f673e920", "name": "Dangling fetch: POST /api/payments (frontend/src/test/compliance/data-protection.test.ts:314)", "shortDescription": {"text": "Dangling fetch: POST /api/payments (frontend/src/test/compliance/data-protection.test.ts:314)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:314` calls `POST /api/payments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/payments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-62bcd47e214aea1d", "name": "Dangling fetch: POST /api/payments/tokenize (frontend/src/test/compliance/data-protection.test.ts:336)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/tokenize (frontend/src/test/compliance/data-protection.test.ts:336)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:336` calls `POST /api/payments/tokenize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/payments/tokenize`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55245b20df304c06", "name": "Dangling fetch: POST /api/payments/charge (frontend/src/test/compliance/data-protection.test.ts:355)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/charge (frontend/src/test/compliance/data-protection.test.ts:355)"}, "fullDescription": {"text": "`frontend/src/test/compliance/data-protection.test.ts:355` calls `POST /api/payments/charge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/payments/charge`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc2862e640ea31ea", "name": "Dangling fetch: GET /api/v1/compliance/status/${tenantId} (frontend/src/components/dashboard/compliance-status-widget.ts", "shortDescription": {"text": "Dangling fetch: GET /api/v1/compliance/status/${tenantId} (frontend/src/components/dashboard/compliance-status-widget.tsx:166)"}, "fullDescription": {"text": "`frontend/src/components/dashboard/compliance-status-widget.tsx:166` calls `GET /api/v1/compliance/status/${tenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/compliance/status/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f813429505a0bd80", "name": "Dangling fetch: POST /api/auth/supabase/verify-otp (frontend/src/app/auth/verify/VerifyClient.tsx:46)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/supabase/verify-otp (frontend/src/app/auth/verify/VerifyClient.tsx:46)"}, "fullDescription": {"text": "`frontend/src/app/auth/verify/VerifyClient.tsx:46` calls `POST /api/auth/supabase/verify-otp` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/supabase/verify-otp`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2e296fa858ac1cf", "name": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/login/LoginClient.tsx:189)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/login/LoginClient.tsx:189)"}, "fullDescription": {"text": "`frontend/src/app/login/LoginClient.tsx:189` calls `POST /api/auth/supabase/sign-in` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/supabase/sign-in`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f3bee3be03074e7", "name": "Dangling fetch: POST http://localhost:3000/api/setup-demo (frontend/src/app/api/__tests__/routes.test.ts:82)", "shortDescription": {"text": "Dangling fetch: POST http://localhost:3000/api/setup-demo (frontend/src/app/api/__tests__/routes.test.ts:82)"}, "fullDescription": {"text": "`frontend/src/app/api/__tests__/routes.test.ts:82` calls `POST http://localhost:3000/api/setup-demo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3000/api/setup-demo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ab12634673b1f87", "name": "Dangling fetch: GET http://localhost:3000/api/review/items (frontend/src/app/api/__tests__/routes.test.ts:92)", "shortDescription": {"text": "Dangling fetch: GET http://localhost:3000/api/review/items (frontend/src/app/api/__tests__/routes.test.ts:92)"}, "fullDescription": {"text": "`frontend/src/app/api/__tests__/routes.test.ts:92` calls `GET http://localhost:3000/api/review/items` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/localhost:3000/api/review/items`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-191b5454a054c8d8", "name": "Dangling fetch: GET /api/fsma/customer-readiness/mappings (frontend/src/app/dashboard/integrations/page.tsx:169)", "shortDescription": {"text": "Dangling fetch: GET /api/fsma/customer-readiness/mappings (frontend/src/app/dashboard/integrations/page.tsx:169)"}, "fullDescription": {"text": "`frontend/src/app/dashboard/integrations/page.tsx:169` calls `GET /api/fsma/customer-readiness/mappings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fsma/customer-readiness/mappings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef46fc022635a4f6", "name": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/signup/page.tsx:54)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/signup/page.tsx:54)"}, "fullDescription": {"text": "`frontend/src/app/signup/page.tsx:54` calls `POST /api/auth/supabase/sign-in` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/supabase/sign-in`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23f3dc5f55eeda7e", "name": "Dangling fetch: POST /api/v1/assessments/retailer-readiness (frontend/src/app/retailer-readiness/page.tsx:142)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/assessments/retailer-readiness (frontend/src/app/retailer-readiness/page.tsx:142)"}, "fullDescription": {"text": "`frontend/src/app/retailer-readiness/page.tsx:142` calls `POST /api/v1/assessments/retailer-readiness` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/assessments/retailer-readiness`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19ac05b0660c6225", "name": "Dangling fetch: GET /api/developer/portal/dashboard (frontend/src/app/developer/portal/page.tsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/developer/portal/dashboard (frontend/src/app/developer/portal/page.tsx:35)"}, "fullDescription": {"text": "`frontend/src/app/developer/portal/page.tsx:35` calls `GET /api/developer/portal/dashboard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/developer/portal/dashboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3d650f00cec53d5", "name": "Dangling fetch: GET /api/developer/portal/usage?range=${timeRange} (frontend/src/app/developer/portal/usage/page.tsx:38)", "shortDescription": {"text": "Dangling fetch: GET /api/developer/portal/usage?range=${timeRange} (frontend/src/app/developer/portal/usage/page.tsx:38)"}, "fullDescription": {"text": "`frontend/src/app/developer/portal/usage/page.tsx:38` calls `GET /api/developer/portal/usage?range=${timeRange}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/developer/portal/usage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42669761b8349515", "name": "Dangling fetch: GET /api/developer/portal/keys (frontend/src/app/developer/portal/keys/page.tsx:37)", "shortDescription": {"text": "Dangling fetch: GET /api/developer/portal/keys (frontend/src/app/developer/portal/keys/page.tsx:37)"}, "fullDescription": {"text": "`frontend/src/app/developer/portal/keys/page.tsx:37` calls `GET /api/developer/portal/keys` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/developer/portal/keys`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41ec8ab3798f25c9", "name": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:102)", "shortDescription": {"text": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:102)"}, "fullDescription": {"text": "`frontend/src/lib/auth-context.tsx:102` calls `GET /api/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c91844fd36962cd", "name": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:151)", "shortDescription": {"text": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:151)"}, "fullDescription": {"text": "`frontend/src/lib/auth-context.tsx:151` calls `GET /api/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64bd522b2c839b7b", "name": "Dangling fetch: GET /api/fsma/organizations (frontend/src/hooks/use-organizations.ts:40)", "shortDescription": {"text": "Dangling fetch: GET /api/fsma/organizations (frontend/src/hooks/use-organizations.ts:40)"}, "fullDescription": {"text": "`frontend/src/hooks/use-organizations.ts:40` calls `GET /api/fsma/organizations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fsma/organizations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44dcdd453cc6ca99", "name": "Unused endpoint: GET /api/v1/features", "shortDescription": {"text": "Unused endpoint: GET /api/v1/features"}, "fullDescription": {"text": "`server/main.py` declares `GET /api/v1/features` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e4ae667a3a93993", "name": "Unused endpoint: GET /billing/plans", "shortDescription": {"text": "Unused endpoint: GET /billing/plans"}, "fullDescription": {"text": "`server/main.py` declares `GET /billing/plans` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`server/main.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2fb03327ec7e635", "name": "Unused endpoint: GET /readiness", "shortDescription": {"text": "Unused endpoint: GET /readiness"}, "fullDescription": {"text": "`server/main.py` declares `GET /readiness` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92c1d3322a1168bd", "name": "Unused endpoint: POST /query/traceability", "shortDescription": {"text": "Unused endpoint: POST /query/traceability"}, "fullDescription": {"text": "`services/nlp/app/routes.py` declares `POST /query/traceability` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c236625afb6a8cb", "name": "Unused endpoint: GET /ready", "shortDescription": {"text": "Unused endpoint: GET /ready"}, "fullDescription": {"text": "`services/shared/observability/health.py` declares `GET /ready` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee732b4833130237", "name": "Unused endpoint: GET /industries", "shortDescription": {"text": "Unused endpoint: GET /industries"}, "fullDescription": {"text": "`services/compliance/app/routes.py` declares `GET /industries` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92ea10166174e0d3", "name": "Unused endpoint: GET /checklists", "shortDescription": {"text": "Unused endpoint: GET /checklists"}, "fullDescription": {"text": "`services/compliance/app/routes.py` declares `GET /checklists` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f47ed8be8eb889fe", "name": "Unused endpoint: GET /checklists/{checklist_id}", "shortDescription": {"text": "Unused endpoint: GET /checklists/{checklist_id}"}, "fullDescription": {"text": "`services/compliance/app/routes.py` declares `GET /checklists/{checklist_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34c0472a1f1fafe5", "name": "Unused endpoint: POST /validate", "shortDescription": {"text": "Unused endpoint: POST /validate"}, "fullDescription": {"text": "`services/compliance/app/routes.py` declares `POST /validate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afc08998b1fc95d5", "name": "Unused endpoint: GET /v1/fsma/audit/spreadsheet", "shortDescription": {"text": "Unused endpoint: GET /v1/fsma/audit/spreadsheet"}, "fullDescription": {"text": "`services/compliance/app/routes.py` declares `GET /v1/fsma/audit/spreadsheet` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e8ae1347ef7494c", "name": "Unused endpoint: POST /drill/start", "shortDescription": {"text": "Unused endpoint: POST /drill/start"}, "fullDescription": {"text": "`services/ingestion/app/mock_audit.py` declares `POST /drill/start` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b702eb895455a76", "name": "Unused endpoint: GET /drill/{drill_id}", "shortDescription": {"text": "Unused endpoint: GET /drill/{drill_id}"}, "fullDescription": {"text": "`services/ingestion/app/mock_audit.py` declares `GET /drill/{drill_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c455b707944633ea", "name": "Unused endpoint: POST /drill/{drill_id}/submit", "shortDescription": {"text": "Unused endpoint: POST /drill/{drill_id}/submit"}, "fullDescription": {"text": "`services/ingestion/app/mock_audit.py` declares `POST /drill/{drill_id}/submit` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0684415ce5c2f026", "name": "Unused endpoint: GET /{tenant_id}/readiness", "shortDescription": {"text": "Unused endpoint: GET /{tenant_id}/readiness"}, "fullDescription": {"text": "`services/ingestion/app/disaster_recovery.py` declares `GET /{tenant_id}/readiness` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50eb8304a3a981f8", "name": "Unused endpoint: GET /{tenant_id}/backup-status", "shortDescription": {"text": "Unused endpoint: GET /{tenant_id}/backup-status"}, "fullDescription": {"text": "`services/ingestion/app/disaster_recovery.py` declares `GET /{tenant_id}/backup-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d78a782de88643b", "name": "Unused endpoint: POST /{tenant_id}/test-recovery", "shortDescription": {"text": "Unused endpoint: POST /{tenant_id}/test-recovery"}, "fullDescription": {"text": "`services/ingestion/app/disaster_recovery.py` declares `POST /{tenant_id}/test-recovery` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59d80f16bc3aa4dc", "name": "Unused endpoint: POST /sensitech", "shortDescription": {"text": "Unused endpoint: POST /sensitech"}, "fullDescription": {"text": "`services/ingestion/app/sensitech_parser.py` declares `POST /sensitech` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aee9168e964a3822", "name": "Unused endpoint: POST /verify", "shortDescription": {"text": "Unused endpoint: POST /verify"}, "fullDescription": {"text": "`services/ingestion/app/proof_verify_router.py` declares `POST /verify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89fac5fa9fc7d4b9", "name": "Unused endpoint: POST /analyze-label", "shortDescription": {"text": "Unused endpoint: POST /analyze-label"}, "fullDescription": {"text": "`services/ingestion/app/label_vision.py` declares `POST /analyze-label` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c948ea72b525d34", "name": "Unused endpoint: GET /{rule_id}", "shortDescription": {"text": "Unused endpoint: GET /{rule_id}"}, "fullDescription": {"text": "`services/ingestion/app/rules_router.py` declares `GET /{rule_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95f235fd6ce6304d", "name": "Unused endpoint: POST /evaluate", "shortDescription": {"text": "Unused endpoint: POST /evaluate"}, "fullDescription": {"text": "`services/ingestion/app/rules_router.py` declares `POST /evaluate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7ee05533f0ac3fc", "name": "Unused endpoint: POST /evaluate-batch", "shortDescription": {"text": "Unused endpoint: POST /evaluate-batch"}, "fullDescription": {"text": "`services/ingestion/app/rules_router.py` declares `POST /evaluate-batch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a9fd841de22cd2f", "name": "Unused endpoint: GET /evaluations/{event_id}", "shortDescription": {"text": "Unused endpoint: GET /evaluations/{event_id}"}, "fullDescription": {"text": "`services/ingestion/app/rules_router.py` declares `GET /evaluations/{event_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3c4eb974e4684dd", "name": "Unused endpoint: POST /seed", "shortDescription": {"text": "Unused endpoint: POST /seed"}, "fullDescription": {"text": "`services/ingestion/app/rules_router.py` declares `POST /seed` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec67d7928c4dea41", "name": "Unused endpoint: POST /epcis", "shortDescription": {"text": "Unused endpoint: POST /epcis"}, "fullDescription": {"text": "`services/ingestion/app/epcis_export.py` declares `POST /epcis` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4204c6c27b047b4", "name": "Unused endpoint: POST /fda", "shortDescription": {"text": "Unused endpoint: POST /fda"}, "fullDescription": {"text": "`services/ingestion/app/epcis_export.py` declares `POST /fda` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9558568720c343c6", "name": "Unused endpoint: GET /formats", "shortDescription": {"text": "Unused endpoint: GET /formats"}, "fullDescription": {"text": "`services/ingestion/app/epcis_export.py` declares `GET /formats` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1b7bee247ffc801", "name": "Unused endpoint: GET /summary", "shortDescription": {"text": "Unused endpoint: GET /summary"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43269e4e79c2e69e", "name": "Unused endpoint: GET /events", "shortDescription": {"text": "Unused endpoint: GET /events"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9036859bef072758", "name": "Unused endpoint: GET /events/{event_id}", "shortDescription": {"text": "Unused endpoint: GET /events/{event_id}"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /events/{event_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26bf5f94d883f709", "name": "Unused endpoint: GET /rules", "shortDescription": {"text": "Unused endpoint: GET /rules"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /rules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bb1d846124aaf68", "name": "Unused endpoint: GET /exceptions", "shortDescription": {"text": "Unused endpoint: GET /exceptions"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /exceptions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42719ea76f9ecae3", "name": "Unused endpoint: GET /requests", "shortDescription": {"text": "Unused endpoint: GET /requests"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /requests` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-218ba6d09673095d", "name": "Unused endpoint: GET /chain", "shortDescription": {"text": "Unused endpoint: GET /chain"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /chain` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b0586e35f3d26c3", "name": "Unused endpoint: GET /export-log", "shortDescription": {"text": "Unused endpoint: GET /export-log"}, "fullDescription": {"text": "`services/ingestion/app/auditor_router.py` declares `GET /export-log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bd561eb3607364b", "name": "Unused endpoint: GET /stats/blocking", "shortDescription": {"text": "Unused endpoint: GET /stats/blocking"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `GET /stats/blocking` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d884f87a598b481c", "name": "Unused endpoint: GET /{case_id}", "shortDescription": {"text": "Unused endpoint: GET /{case_id}"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `GET /{case_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fa686a61d74f80d", "name": "Unused endpoint: PATCH /{case_id}/assign", "shortDescription": {"text": "Unused endpoint: PATCH /{case_id}/assign"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `PATCH /{case_id}/assign` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae832748577068a4", "name": "Unused endpoint: PATCH /{case_id}/resolve", "shortDescription": {"text": "Unused endpoint: PATCH /{case_id}/resolve"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `PATCH /{case_id}/resolve` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a6005179780b01b", "name": "Unused endpoint: PATCH /{case_id}/waive", "shortDescription": {"text": "Unused endpoint: PATCH /{case_id}/waive"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `PATCH /{case_id}/waive` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbbf13e5d2cf282e", "name": "Unused endpoint: GET /{case_id}/comments", "shortDescription": {"text": "Unused endpoint: GET /{case_id}/comments"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `GET /{case_id}/comments` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8ac2bf21c1e4a5c", "name": "Unused endpoint: POST /{case_id}/comments", "shortDescription": {"text": "Unused endpoint: POST /{case_id}/comments"}, "fullDescription": {"text": "`services/ingestion/app/exception_router.py` declares `POST /{case_id}/comments` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db3d606be47916b9", "name": "Unused endpoint: POST /webhook/{connector_id}", "shortDescription": {"text": "Unused endpoint: POST /webhook/{connector_id}"}, "fullDescription": {"text": "`services/ingestion/app/integration_webhook.py` declares `POST /webhook/{connector_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9c6a87735659c4d", "name": "Unused endpoint: GET /ingestion-runs", "shortDescription": {"text": "Unused endpoint: GET /ingestion-runs"}, "fullDescription": {"text": "`services/ingestion/app/canonical_router.py` declares `GET /ingestion-runs` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e6202052b9c7a28", "name": "Unused endpoint: GET /ingestion-runs/{run_id}", "shortDescription": {"text": "Unused endpoint: GET /ingestion-runs/{run_id}"}, "fullDescription": {"text": "`services/ingestion/app/canonical_router.py` declares `GET /ingestion-runs/{run_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39058efd4b63e7a9", "name": "Unused endpoint: GET /{event_id}", "shortDescription": {"text": "Unused endpoint: GET /{event_id}"}, "fullDescription": {"text": "`services/ingestion/app/canonical_router.py` declares `GET /{event_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-026d94717b95b687", "name": "Unused endpoint: GET /{event_id}/history", "shortDescription": {"text": "Unused endpoint: GET /{event_id}/history"}, "fullDescription": {"text": "`services/ingestion/app/canonical_router.py` declares `GET /{event_id}/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67614ef3e26e76a7", "name": "Unused endpoint: GET /trace/forward/{tlc}", "shortDescription": {"text": "Unused endpoint: GET /trace/forward/{tlc}"}, "fullDescription": {"text": "`services/ingestion/app/canonical_router.py` declares `GET /trace/forward/{tlc}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18014"}, "properties": {"repository": "regengine/RegEngine", "repoUrl": "https://github.com/regengine/RegEngine", "branch": "main"}, "results": [{"ruleId": "scanner-a41d673b58d725b0", "level": "note", "message": {"text": "Possibly dead Python function: query_records"}, "properties": {"repobilityId": "f89eb6c367e8dd32", "scanner": "scanner-primary", "fingerprint": "a41d673b58d725b0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/client.py:266"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-23357a50c6b5ce65", "level": "note", "message": {"text": "Possibly dead Python function: check_ftl"}, "properties": {"repobilityId": "0f19b5f443706951", "scanner": "scanner-primary", "fingerprint": "23357a50c6b5ce65", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/client.py:360"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-155de6b2a29649e6", "level": "note", "message": {"text": "Possibly dead Python function: start_recall_drill"}, "properties": {"repobilityId": "184844b5ec3890c6", "scanner": "scanner-primary", "fingerprint": "155de6b2a29649e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/client.py:377"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c36f01db5d6d1abc", "level": "note", "message": {"text": "Possibly dead Python function: generate_batch_labels"}, "properties": {"repobilityId": "6529603c1ecf60c4", "scanner": "scanner-primary", "fingerprint": "c36f01db5d6d1abc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/labels.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e20e78e0b9e4bf79", "level": "note", "message": {"text": "Possibly dead Python function: cmd_troubleshoot"}, "properties": {"repobilityId": "16cd25c874de5b29", "scanner": "scanner-primary", "fingerprint": "e20e78e0b9e4bf79", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/cli.py:243"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5739c1cd23af966", "level": "note", "message": {"text": "Possibly dead Python function: cmd_solve"}, "properties": {"repobilityId": "b009f60c24adbf52", "scanner": "scanner-primary", "fingerprint": "b5739c1cd23af966", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/cli.py:278"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5916dfc55e8c97f7", "level": "note", "message": {"text": "Possibly dead Python function: cmd_label"}, "properties": {"repobilityId": "f636d9b9b3c6e782", "scanner": "scanner-primary", "fingerprint": "5916dfc55e8c97f7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/cli.py:318"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7611fda57e3762f1", "level": "note", "message": {"text": "Possibly dead Python function: cmd_sweep"}, "properties": {"repobilityId": "fbed52d276abac83", "scanner": "scanner-primary", "fingerprint": "7611fda57e3762f1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/cli.py:401"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-693d33b86faa6c55", "level": "note", "message": {"text": "Possibly dead Python function: cmd_compliance"}, "properties": {"repobilityId": "fccffd9160470908", "scanner": "scanner-primary", "fingerprint": "693d33b86faa6c55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/cli.py:413"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40b7062d02c04199", "level": "note", "message": {"text": "Possibly dead Python function: create_branch"}, "properties": {"repobilityId": "46626c2e9a48d0ae", "scanner": "scanner-primary", "fingerprint": "40b7062d02c04199", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "regengine/swarm/github_integration.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5483b06dcd3a6f7c", "level": "note", "message": {"text": "Possibly dead Python function: check_hash_chain_continuity"}, "properties": {"repobilityId": "75d06084cdf5976f", "scanner": "scanner-primary", "fingerprint": "5483b06dcd3a6f7c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate_data_integrity.py:42"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be7594f703f1185e", "level": "note", "message": {"text": "Possibly dead Python function: check_orphaned_records"}, "properties": {"repobilityId": "ea2ab5c4becaa6ed", "scanner": "scanner-primary", "fingerprint": "be7594f703f1185e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate_data_integrity.py:66"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b504e5fa630ae878", "level": "note", "message": {"text": "Possibly dead Python function: check_tenant_isolation"}, "properties": {"repobilityId": "a4323930c2deb020", "scanner": "scanner-primary", "fingerprint": "b504e5fa630ae878", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate_data_integrity.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b3c679e16586344", "level": "note", "message": {"text": "Possibly dead Python function: build_demo_rules"}, "properties": {"repobilityId": "a61b2451681d7768", "scanner": "scanner-primary", "fingerprint": "3b3c679e16586344", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed_demo_data.py:510"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4dd1afa42133712f", "level": "note", "message": {"text": "Possibly dead Python function: check_texas_scraper_inheritance"}, "properties": {"repobilityId": "4122528272ee3dea", "scanner": "scanner-primary", "fingerprint": "4dd1afa42133712f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify_production_readiness.py:98"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-706dde30d67fe504", "level": "note", "message": {"text": "Possibly dead Python function: check_correlation_middleware"}, "properties": {"repobilityId": "63131509edbc6fff", "scanner": "scanner-primary", "fingerprint": "706dde30d67fe504", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify_production_readiness.py:165"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccf5d731dac58cd0", "level": "note", "message": {"text": "Possibly dead Python function: check_rate_limit_security"}, "properties": {"repobilityId": "63f4df04f09a2ea6", "scanner": "scanner-primary", "fingerprint": "ccf5d731dac58cd0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify_production_readiness.py:217"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0591f5aaab407f4", "level": "note", "message": {"text": "Possibly dead Python function: check_railway_deployment_workflow"}, "properties": {"repobilityId": "9af2089e1f04ad11", "scanner": "scanner-primary", "fingerprint": "c0591f5aaab407f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify_production_readiness.py:268"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a666e489334effe7", "level": "note", "message": {"text": "Possibly dead Python function: scheduled_job"}, "properties": {"repobilityId": "09f02bfc964e142e", "scanner": "scanner-primary", "fingerprint": "a666e489334effe7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scheduler/fsma_auto_ingest.py:326"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de35ca7ada670e1e", "level": "note", "message": {"text": "Possibly dead Python function: load_s3_artifact"}, "properties": {"repobilityId": "ef6d81c840f46e3f", "scanner": "scanner-primary", "fingerprint": "de35ca7ada670e1e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/nlp/app/s3_loader.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b54cb84e2a11b686", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "b54cb84e2a11b686", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/nlp/app/text_loader.py:103"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-57419c1a803dda2f", "level": "note", "message": {"text": "Possibly dead Python function: contains_point"}, "properties": {"repobilityId": "0dc830edc493e1bc", "scanner": "scanner-primary", "fingerprint": "57419c1a803dda2f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/nlp/app/extractors/table_extractor.py:95"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-215625b22e1140a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/invite_flow.spec.ts:18"}, "properties": {"repobilityId": "a6eb542b2009e43d", "scanner": "scanner-primary", "fingerprint": "215625b22e1140a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba7bbb5c41411ad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/tests/e2e/global-setup.ts:39"}, "properties": {"repobilityId": "340fa7cece8345a2", "scanner": "scanner-primary", "fingerprint": "ba7bbb5c41411ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d413be5217934651", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/__tests__/lib/json-ld.test.ts:4"}, "properties": {"repobilityId": "74fe305dd242974f", "scanner": "scanner-primary", "fingerprint": "d413be5217934651", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-68b74c2633a85ddc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/compliance-status-widget.tsx:248"}, "properties": {"repobilityId": "508d46fba2c1c6c9", "scanner": "scanner-primary", "fingerprint": "68b74c2633a85ddc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0579e25038037360", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/metrics-overview-widget.tsx:93"}, "properties": {"repobilityId": "467f659bc96300e3", "scanner": "scanner-primary", "fingerprint": "0579e25038037360", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3fa500ee1cbeb3c9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/system-health-widget.tsx:45"}, "properties": {"repobilityId": "eb55a183a7e8e812", "scanner": "scanner-primary", "fingerprint": "3fa500ee1cbeb3c9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1abc3a4ed724750e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/dashboard/scan-history-widget.tsx:123"}, "properties": {"repobilityId": "f0791fd5a7803bff", "scanner": "scanner-primary", "fingerprint": "1abc3a4ed724750e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aee8e3801d164ab4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mobile/FieldCaptureClient.tsx:490"}, "properties": {"repobilityId": "0336686ec3f47ad4", "scanner": "scanner-primary", "fingerprint": "aee8e3801d164ab4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e5d5e3a48b75c42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/supply-chain-graph.tsx:138"}, "properties": {"repobilityId": "5ac365235f0fc5eb", "scanner": "scanner-primary", "fingerprint": "1e5d5e3a48b75c42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ab326272e288628c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/recall-timer.tsx:189"}, "properties": {"repobilityId": "6674723806f48f70", "scanner": "scanner-primary", "fingerprint": "ab326272e288628c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-762612dd9099f8eb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fsma/mass-balance-widget.tsx:244"}, "properties": {"repobilityId": "b6bbb73bb8b85b57", "scanner": "scanner-primary", "fingerprint": "762612dd9099f8eb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4e9bc787b4093212", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/seo/json-ld.tsx:18"}, "properties": {"repobilityId": "072854e2b19ed49b", "scanner": "scanner-primary", "fingerprint": "4e9bc787b4093212", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-89b26df99d6756aa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/trace/page.tsx:312"}, "properties": {"repobilityId": "3c0754ea8d9a4544", "scanner": "scanner-primary", "fingerprint": "89b26df99d6756aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dddb0ef3916fd352", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/exceptions/page.tsx:225"}, "properties": {"repobilityId": "6d1a4e499e899f60", "scanner": "scanner-primary", "fingerprint": "dddb0ef3916fd352", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6926eb8e91025449", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/login/LoginClient.tsx:446"}, "properties": {"repobilityId": "516aa2190b27add9", "scanner": "scanner-primary", "fingerprint": "6926eb8e91025449", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c124d3331df3caff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/__tests__/routes.test.ts:31"}, "properties": {"repobilityId": "eb8dc71abe874fdd", "scanner": "scanner-primary", "fingerprint": "c124d3331df3caff", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4dfa0dc04bf3ab7a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/app/api/contact/route.ts:116"}, "properties": {"repobilityId": "e88397db967ff653", "scanner": "scanner-primary", "fingerprint": "4dfa0dc04bf3ab7a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-82d160c59d38106d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/page.tsx:200"}, "properties": {"repobilityId": "81410ef455d2e617", "scanner": "scanner-primary", "fingerprint": "82d160c59d38106d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db0d060f5b5b2088", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/app/docs/layout.tsx:47"}, "properties": {"repobilityId": "7a232f1f01ab4616", "scanner": "scanner-primary", "fingerprint": "db0d060f5b5b2088", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b98e0d63813d66d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/docs/quickstart/page.tsx:183"}, "properties": {"repobilityId": "d96c05326c94698b", "scanner": "scanner-primary", "fingerprint": "b98e0d63813d66d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4b9178824016f95", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/page.tsx:416"}, "properties": {"repobilityId": "6f7e074259b22c9d", "scanner": "scanner-primary", "fingerprint": "e4b9178824016f95", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd5be98933a8f3c6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/notifications/page.tsx:249"}, "properties": {"repobilityId": "f3f0f5239f2cefbf", "scanner": "scanner-primary", "fingerprint": "dd5be98933a8f3c6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a6d0eecb9cf53a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/qa-health/page.tsx:445"}, "properties": {"repobilityId": "3a83ea64c4a556ca", "scanner": "scanner-primary", "fingerprint": "8a6d0eecb9cf53a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-758805b45ef228f6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/issues/page.tsx:244"}, "properties": {"repobilityId": "79c74171f037fe1d", "scanner": "scanner-primary", "fingerprint": "758805b45ef228f6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0634a68e213a8474", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/export-jobs/page.tsx:267"}, "properties": {"repobilityId": "cc8a361df88cc543", "scanner": "scanner-primary", "fingerprint": "0634a68e213a8474", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6fc4a3b383d28f04", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/audit-log/page.tsx:374"}, "properties": {"repobilityId": "7f675bb1f616ff9b", "scanner": "scanner-primary", "fingerprint": "6fc4a3b383d28f04", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2c2cdc5d1f7919c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/team/page.tsx:201"}, "properties": {"repobilityId": "1ebce7925fb347c1", "scanner": "scanner-primary", "fingerprint": "b2c2cdc5d1f7919c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a2a99a9647e717a9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/recall-report/page.tsx:404"}, "properties": {"repobilityId": "eb69bb145bbe4287", "scanner": "scanner-primary", "fingerprint": "a2a99a9647e717a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4a25c152ae38ee46", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/heartbeat/page.tsx:749"}, "properties": {"repobilityId": "876b1d904e1b6051", "scanner": "scanner-primary", "fingerprint": "4a25c152ae38ee46", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5605f94a249da37", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/compliance/page.tsx:502"}, "properties": {"repobilityId": "5705980607336b08", "scanner": "scanner-primary", "fingerprint": "c5605f94a249da37", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe5a64a40d021b16", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/suppliers/page.tsx:397"}, "properties": {"repobilityId": "734f85a404d377fb", "scanner": "scanner-primary", "fingerprint": "fe5a64a40d021b16", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74bc372497a275dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/scan/page.tsx:176"}, "properties": {"repobilityId": "361975c00d19c085", "scanner": "scanner-primary", "fingerprint": "74bc372497a275dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6cabeb8061b14896", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/receiving/page.tsx:471"}, "properties": {"repobilityId": "4ba54358b5e4b6ec", "scanner": "scanner-primary", "fingerprint": "6cabeb8061b14896", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dd541c39ec25d73d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/dashboard/products/page.tsx:291"}, "properties": {"repobilityId": "4cec164a37149a03", "scanner": "scanner-primary", "fingerprint": "dd541c39ec25d73d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d00d2ac205de020", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/compliance/labels/page.tsx:459"}, "properties": {"repobilityId": "d06c40af1b255b06", "scanner": "scanner-primary", "fingerprint": "8d00d2ac205de020", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3c18fcb863f0381d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/admin/api-console/page.tsx:299"}, "properties": {"repobilityId": "2069f8225fe1b791", "scanner": "scanner-primary", "fingerprint": "3c18fcb863f0381d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a97e704302e40e91", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/records/page.tsx:166"}, "properties": {"repobilityId": "4f36eed403e30435", "scanner": "scanner-primary", "fingerprint": "a97e704302e40e91", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7f67a84293cc0546", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/usage/page.tsx:173"}, "properties": {"repobilityId": "a55c46fcd81fe4a7", "scanner": "scanner-primary", "fingerprint": "7f67a84293cc0546", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bda84f504be0960d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/app/developer/portal/codegen/page.tsx:74"}, "properties": {"repobilityId": "3fd58d8d1c90513a", "scanner": "scanner-primary", "fingerprint": "bda84f504be0960d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c88418f7c36ad2a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/developer/portal/keys/page.tsx:184"}, "properties": {"repobilityId": "3cc1e90b69691f10", "scanner": "scanner-primary", "fingerprint": "0c88418f7c36ad2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f30028b21fedceb8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/onboarding/bulk-upload/page.tsx:716"}, "properties": {"repobilityId": "e22b00f9395f2b80", "scanner": "scanner-primary", "fingerprint": "f30028b21fedceb8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-64707e6ff0716609", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/portal/[portalId]/page.tsx:297"}, "properties": {"repobilityId": "92cf9a88657c566b", "scanner": "scanner-primary", "fingerprint": "64707e6ff0716609", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d55062280f7b48dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx:1585"}, "properties": {"repobilityId": "b3427cc7c4c853dc", "scanner": "scanner-primary", "fingerprint": "d55062280f7b48dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5f98d5d9e2df490b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/data-import/components/DataImportClient.tsx:475"}, "properties": {"repobilityId": "dae8136b6f62c494", "scanner": "scanner-primary", "fingerprint": "5f98d5d9e2df490b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-010ecc2838957c28", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/tools/label-scanner/page.tsx:506"}, "properties": {"repobilityId": "5fb4b6068ebd842a", "scanner": "scanner-primary", "fingerprint": "010ecc2838957c28", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9e46dfe985ea8248", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/fsma/page.tsx:403"}, "properties": {"repobilityId": "9be2203337ddd107", "scanner": "scanner-primary", "fingerprint": "9e46dfe985ea8248", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eaf74bbb992a2e75", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/lib/json-ld.ts:9"}, "properties": {"repobilityId": "ef58223f7ffa0593", "scanner": "scanner-primary", "fingerprint": "eaf74bbb992a2e75", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8a8a87c1dd2f9b44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/user-journey.js:184"}, "properties": {"repobilityId": "79dfbc7559b53b3b", "scanner": "scanner-primary", "fingerprint": "8a8a87c1dd2f9b44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46fd827a02edf13e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/k6-admin-test.js:214"}, "properties": {"repobilityId": "96af71dc0c134461", "scanner": "scanner-primary", "fingerprint": "46fd827a02edf13e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd1f2609c9cb0f9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/k6-ingestion-test.js:201"}, "properties": {"repobilityId": "90daad890253a4cc", "scanner": "scanner-primary", "fingerprint": "fd1f2609c9cb0f9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4552ddcb81302675", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/drift-check.js:21"}, "properties": {"repobilityId": "67f7e3deed792292", "scanner": "scanner-primary", "fingerprint": "4552ddcb81302675", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7659039e8d0a80f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/regression.js:30"}, "properties": {"repobilityId": "5adad9a79093fb76", "scanner": "scanner-primary", "fingerprint": "7659039e8d0a80f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3ad2498408ee1c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/tenant-test.js:15"}, "properties": {"repobilityId": "095c8a85ed431f8a", "scanner": "scanner-primary", "fingerprint": "d3ad2498408ee1c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5766fa8306b1158", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/decision.js:12"}, "properties": {"repobilityId": "f8ceab4f248982f0", "scanner": "scanner-primary", "fingerprint": "d5766fa8306b1158", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9a60d43591d3dee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/bad-data.js:19"}, "properties": {"repobilityId": "c7513155434ac377", "scanner": "scanner-primary", "fingerprint": "a9a60d43591d3dee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87ef1f358f81784b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/summary.js:75"}, "properties": {"repobilityId": "aecd084edea884ae", "scanner": "scanner-primary", "fingerprint": "87ef1f358f81784b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3bdc317bfb09cf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/export-validate.js:19"}, "properties": {"repobilityId": "5863e6ebed25b440", "scanner": "scanner-primary", "fingerprint": "c3bdc317bfb09cf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af3850edd718e1f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/full-flow.js:22"}, "properties": {"repobilityId": "2b82be54e441ee16", "scanner": "scanner-primary", "fingerprint": "af3850edd718e1f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da8ee0ed78597bf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/ai-analysis.js:18"}, "properties": {"repobilityId": "0074b510a278bed3", "scanner": "scanner-primary", "fingerprint": "da8ee0ed78597bf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fbf431c83f46ef0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 qa/fsma-lite-check.js:39"}, "properties": {"repobilityId": "cffc3181afcd370e", "scanner": "scanner-primary", "fingerprint": "1fbf431c83f46ef0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fa9fb83bc7fe94a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e_tests.js:54"}, "properties": {"repobilityId": "76e1214932f5c54d", "scanner": "scanner-primary", "fingerprint": "4fa9fb83bc7fe94a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1aea35811f52aa2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test_fsma_endpoints.js:106"}, "properties": {"repobilityId": "73b738751ce31017", "scanner": "scanner-primary", "fingerprint": "1aea35811f52aa2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ae6c7aa8c6ea69f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed_demo.js:120"}, "properties": {"repobilityId": "979f7388978bf8a3", "scanner": "scanner-primary", "fingerprint": "5ae6c7aa8c6ea69f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eff54870cbba425d", "level": "warning", "message": {"text": "Privileged port 50 in use"}, "properties": {"repobilityId": "da61f654c07ea7a9", "scanner": "scanner-primary", "fingerprint": "eff54870cbba425d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/nfr/slos.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45483f6f85351912", "level": "warning", "message": {"text": "Privileged port 95 in use"}, "properties": {"repobilityId": "860dd1b02ecc695b", "scanner": "scanner-primary", "fingerprint": "45483f6f85351912", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/nfr/slos.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc0488923332f6a8", "level": "warning", "message": {"text": "Privileged port 99 in use"}, "properties": {"repobilityId": "78349e9298b9fc49", "scanner": "scanner-primary", "fingerprint": "dc0488923332f6a8", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/nfr/slos.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58ffa6481da1b217", "level": "warning", "message": {"text": "Privileged port 12 in use"}, "properties": {"repobilityId": "65e7eefa33f2def4", "scanner": "scanner-primary", "fingerprint": "58ffa6481da1b217", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/security/verify_audit_chain.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1fc9a316eed0d33e", "level": "warning", "message": {"text": "Privileged port 10 in use"}, "properties": {"repobilityId": "735372d6b5594915", "scanner": "scanner-primary", "fingerprint": "1fc9a316eed0d33e", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/railway/verify_inflow_workbench_staging.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-252418bf870d7aed", "level": "warning", "message": {"text": "Privileged port 256 in use"}, "properties": {"repobilityId": "0ec1f2d0c9e6da94", "scanner": "scanner-primary", "fingerprint": "252418bf870d7aed", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/infra-k8s-ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-025d2ebb865683f8", "level": "warning", "message": {"text": "Privileged port 29 in use"}, "properties": {"repobilityId": "f09242400239b5a3", "scanner": "scanner-primary", "fingerprint": "025d2ebb865683f8", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/infra-k8s-ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "9003fd98693461e7", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "b6d2835ceadc9396", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "1d226f7474bc3dab", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "716470d799687ee2", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-8893c9de4acfd66f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/production-readiness.mjs:3"}, "properties": {"repobilityId": "5a8235ecb088fbb8", "scanner": "scanner-primary", "fingerprint": "8893c9de4acfd66f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/production-readiness.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-0d1b39cec971f59e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/verify-public-ssr.mjs:1"}, "properties": {"repobilityId": "73e9163091ef2f84", "scanner": "scanner-primary", "fingerprint": "0d1b39cec971f59e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/verify-public-ssr.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3fdce3a9a6f34229", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/__tests__/lib/fetch-with-csrf.test.ts:6"}, "properties": {"repobilityId": "cd870344503e0e54", "scanner": "scanner-primary", "fingerprint": "3fdce3a9a6f34229", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/__tests__/lib/fetch-with-csrf.test.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-b9c0dcc5f156f430", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/seo/json-ld.tsx:18"}, "properties": {"repobilityId": "c11af4fd04da01e6", "scanner": "scanner-primary", "fingerprint": "b9c0dcc5f156f430", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/seo/json-ld.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-3b1a6e86988be4c0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/app/docs/layout.tsx:47"}, "properties": {"repobilityId": "e43eeda219334b8a", "scanner": "scanner-primary", "fingerprint": "3b1a6e86988be4c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/docs/layout.tsx"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-ada7fdb919d1c722", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in qa/summary.js:8"}, "properties": {"repobilityId": "3a9a470e721b6234", "scanner": "scanner-primary", "fingerprint": "ada7fdb919d1c722", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "qa/summary.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-04cb1db4652f5cf3", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in docs/internal/INTERNAL_TOOLS_AUDIT.json:531"}, "properties": {"repobilityId": "8f09e255a1cba5fb", "scanner": "scanner-primary", "fingerprint": "04cb1db4652f5cf3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/internal/INTERNAL_TOOLS_AUDIT.json"}, "region": {"startLine": 531}}}]}, {"ruleId": "scanner-6172913818ee962e", "level": "error", "message": {"text": "Possible secret in scripts/e2e_brutal_scenario.py"}, "properties": {"repobilityId": "afbb73ec8f88427a", "scanner": "scanner-primary", "fingerprint": "6172913818ee962e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e_brutal_scenario.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-1535290243f0a2fc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .github/workflows/review-gates.yml:96"}, "properties": {"repobilityId": "53678477d944ee01", "scanner": "scanner-primary", "fingerprint": "1535290243f0a2fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-gates.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-ceae604a51dce987", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c049a459a0bc21b", "scanner": "scanner-primary", "fingerprint": "ceae604a51dce987", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sentinel.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-ceae604a51dce987", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8b29f6141dea4ce0", "scanner": "scanner-primary", "fingerprint": "ceae604a51dce987", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sentinel.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-ceae604a51dce987", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "79bcb0e07b088221", "scanner": "scanner-primary", "fingerprint": "ceae604a51dce987", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sentinel.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-ceae604a51dce987", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "749e103569d014da", "scanner": "scanner-primary", "fingerprint": "ceae604a51dce987", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sentinel.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-ceae604a51dce987", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "491a5d31c4c45395", "scanner": "scanner-primary", "fingerprint": "ceae604a51dce987", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sentinel.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-6a0afb468e89e566", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "066944deed25cf78", "scanner": "scanner-primary", "fingerprint": "6a0afb468e89e566", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-25124c17e61288bd", "level": "note", "message": {"text": "Very large file: frontend/src/app/compliance/snapshots/page.tsx (1044 lines)"}, "properties": {"repobilityId": "cb2fdeeb7db06f96", "scanner": "scanner-primary", "fingerprint": "25124c17e61288bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-255953cffce2d8e6", "level": "note", "message": {"text": "Very large file: frontend/src/app/onboarding/bulk-upload/page.tsx (1087 lines)"}, "properties": {"repobilityId": "f9c5e30a9b2215af", "scanner": "scanner-primary", "fingerprint": "255953cffce2d8e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2a808a7e36a7ade4", "level": "note", "message": {"text": "Very large file: frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx (2239 lines)"}, "properties": {"repobilityId": "31ac888781927eff", "scanner": "scanner-primary", "fingerprint": "2a808a7e36a7ade4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43cf9de8c242d40e", "level": "note", "message": {"text": "Very large file: frontend/src/app/tools/inflow-lab/components/InflowLabClient.tsx (2827 lines)"}, "properties": {"repobilityId": "9e16c0179ce8230c", "scanner": "scanner-primary", "fingerprint": "43cf9de8c242d40e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c04151c3de0d7fc5", "level": "note", "message": {"text": "Very large file: frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx (1199 lines)"}, "properties": {"repobilityId": "b7b84395df75966f", "scanner": "scanner-primary", "fingerprint": "c04151c3de0d7fc5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7db42795e9c2fa42", "level": "note", "message": {"text": "Very large file: services/shared/canonical_persistence/writer.py (1208 lines)"}, "properties": {"repobilityId": "fc1d08fe2b3c0127", "scanner": "scanner-primary", "fingerprint": "7db42795e9c2fa42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-790d5c696c621916", "level": "note", "message": {"text": "Very large file: services/ingestion/tests/test_webhook_router_v2_1342.py (1904 lines)"}, "properties": {"repobilityId": "3d767607e5be67ba", "scanner": "scanner-primary", "fingerprint": "790d5c696c621916", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1925cb33f7c42569", "level": "note", "message": {"text": "Very large file: services/ingestion/tests/test_compliance_score_1342.py (1465 lines)"}, "properties": {"repobilityId": "2407beba99ae0e0a", "scanner": "scanner-primary", "fingerprint": "1925cb33f7c42569", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d6e3ba573999534", "level": "note", "message": {"text": "Very large file: services/ingestion/tests/test_sandbox_evaluators_1342.py (1280 lines)"}, "properties": {"repobilityId": "fad88838b937b0d1", "scanner": "scanner-primary", "fingerprint": "0d6e3ba573999534", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-641f30a27e9425ec", "level": "note", "message": {"text": "Very large file: services/admin/tests/test_auth_routes_1333.py (1933 lines)"}, "properties": {"repobilityId": "f11213134b6f46dc", "scanner": "scanner-primary", "fingerprint": "641f30a27e9425ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e19463ab93a8059e", "level": "note", "message": {"text": "Very large file: alembic/versions/20260505_5ac9e7b1d402_v078_orphan_migration_forward_ports.py (1661 lines)"}, "properties": {"repobilityId": "0261bb80dfaa02ca", "scanner": "scanner-primary", "fingerprint": "e19463ab93a8059e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "98bacdd27f45f113", "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": "c31a862cfa388720", "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": "627ba5c444f78454", "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": "1b32d818290cfd83", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "36d54bf2013d724d", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "55c08bd19e78ce62", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-94eaa4a6396b3a6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/sentinel-check.md"}, "properties": {"repobilityId": "3f684bc8f1bccb8f", "scanner": "scanner-primary", "fingerprint": "94eaa4a6396b3a6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/sentinel-check.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27c89ba2fa21d3a4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/sentinel-interstitial.md"}, "properties": {"repobilityId": "5b91ae7d9a07ba98", "scanner": "scanner-primary", "fingerprint": "27c89ba2fa21d3a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/sentinel-interstitial.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6e26e9a15db46a47", "level": "none", "message": {"text": "Commented-code block (5 lines) in conftest.py:34"}, "properties": {"repobilityId": "b660e176374fe426", "scanner": "scanner-primary", "fingerprint": "6e26e9a15db46a47", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d3169091b4765dd", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in frontend/next.config.js:202"}, "properties": {"repobilityId": "682ecbf77dbc3a9f", "scanner": "scanner-primary", "fingerprint": "0d3169091b4765dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-42990f0dcffa166a", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/next.config.js:125"}, "properties": {"repobilityId": "94a0335821d6aa68", "scanner": "scanner-primary", "fingerprint": "42990f0dcffa166a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db8899a38e1a16cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/eslint.config.mjs:31"}, "properties": {"repobilityId": "ab8e9004c19174e7", "scanner": "scanner-primary", "fingerprint": "db8899a38e1a16cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8bb618681be2c50", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:56"}, "properties": {"repobilityId": "21b9542508cdd9a9", "scanner": "scanner-primary", "fingerprint": "f8bb618681be2c50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2ca6a4905b24bec", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/proxy.ts:14"}, "properties": {"repobilityId": "d863f0da64e18dfe", "scanner": "scanner-primary", "fingerprint": "b2ca6a4905b24bec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-500a51fff915c17a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/api/proxy-sanitization.test.ts:132"}, "properties": {"repobilityId": "f684a6f9a1ee1943", "scanner": "scanner-primary", "fingerprint": "500a51fff915c17a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aece538b0c7f22d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/api/proxy-sanitization.test.ts:644"}, "properties": {"repobilityId": "0c9bbff11de9a896", "scanner": "scanner-primary", "fingerprint": "0aece538b0c7f22d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c281b32e701a2a71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/dashboard.test.tsx:74"}, "properties": {"repobilityId": "2576e1c5942f1609", "scanner": "scanner-primary", "fingerprint": "c281b32e701a2a71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8da2bdfa106985e5", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/pages/inflow-lab.test.tsx:389"}, "properties": {"repobilityId": "9ea88138dff81fe9", "scanner": "scanner-primary", "fingerprint": "8da2bdfa106985e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a88d280f7a8331d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/__tests__/pages/inflow-lab.test.tsx:27"}, "properties": {"repobilityId": "f68d209035250c34", "scanner": "scanner-primary", "fingerprint": "2a88d280f7a8331d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7bc01280380b43f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/api-security.test.ts:36"}, "properties": {"repobilityId": "95d8ff2c00b94af2", "scanner": "scanner-primary", "fingerprint": "7bc01280380b43f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cde230719fcd4b7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/rbac.test.ts:29"}, "properties": {"repobilityId": "ddb2f9c38f78a7f9", "scanner": "scanner-primary", "fingerprint": "cde230719fcd4b7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e2cd3d794a3cbc3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/security/audit-trail.test.ts:88"}, "properties": {"repobilityId": "f6c55917987e1da8", "scanner": "scanner-primary", "fingerprint": "8e2cd3d794a3cbc3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c44662613a4c596", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/test/compliance/data-protection.test.ts:45"}, "properties": {"repobilityId": "0a0b2aa74eee2177", "scanner": "scanner-primary", "fingerprint": "8c44662613a4c596", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e4cd156b59b6540", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/integrations/page.tsx:130"}, "properties": {"repobilityId": "d323fab901ffe244", "scanner": "scanner-primary", "fingerprint": "4e4cd156b59b6540", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ad00c5e90b17284", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sysadmin/page.tsx:56"}, "properties": {"repobilityId": "a234cf92986cd4fe", "scanner": "scanner-primary", "fingerprint": "2ad00c5e90b17284", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-42f9226ec1ddfd11", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/app/auth/callback/route.ts:45"}, "properties": {"repobilityId": "013f89729246422f", "scanner": "scanner-primary", "fingerprint": "42f9226ec1ddfd11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9afbd0621e255f76", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/auth/verify/VerifyClient.tsx:46"}, "properties": {"repobilityId": "7c24277565ebf941", "scanner": "scanner-primary", "fingerprint": "9afbd0621e255f76", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a05215d4297e575a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/reset-password/ResetPasswordClient.tsx:68"}, "properties": {"repobilityId": "85430774d5d36f3d", "scanner": "scanner-primary", "fingerprint": "a05215d4297e575a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d10ba39cffabd70", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/login/LoginClient.tsx:189"}, "properties": {"repobilityId": "98ea4d2fdb54728a", "scanner": "scanner-primary", "fingerprint": "2d10ba39cffabd70", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fb9927dd6a54dfef", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/api/__tests__/routes.test.ts:51"}, "properties": {"repobilityId": "95d6cce46e410330", "scanner": "scanner-primary", "fingerprint": "fb9927dd6a54dfef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe1eac0693f43e5d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/__tests__/routes.test.ts:82"}, "properties": {"repobilityId": "144daee1ccf030f4", "scanner": "scanner-primary", "fingerprint": "fe1eac0693f43e5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65a42ab2c8226892", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/app/api/auth/supabase/sign-in/route.ts:4"}, "properties": {"repobilityId": "a9b1122ffba0c56b", "scanner": "scanner-primary", "fingerprint": "65a42ab2c8226892", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aa90dc59bc6464e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/api/v1/compliance/snapshots/[tenantId]/[snapshotId]/attest/route.ts:76"}, "properties": {"repobilityId": "94f44ee4290e6b0d", "scanner": "scanner-primary", "fingerprint": "2aa90dc59bc6464e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c09bfbfa01aeffe", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/api/review/[...path]/route.ts:5"}, "properties": {"repobilityId": "4ab14de906dff981", "scanner": "scanner-primary", "fingerprint": "2c09bfbfa01aeffe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1aa0ab316a1718b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/billing/checkout/route.ts:46"}, "properties": {"repobilityId": "011be8ff40ee551a", "scanner": "scanner-primary", "fingerprint": "a1aa0ab316a1718b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb3153a010f320c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/tools/verify/route.ts:42"}, "properties": {"repobilityId": "3758412409adce33", "scanner": "scanner-primary", "fingerprint": "bb3153a010f320c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a5747fa88bc3e13a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/api/session/route.ts:48"}, "properties": {"repobilityId": "7cfbdd7fe77ce5b7", "scanner": "scanner-primary", "fingerprint": "a5747fa88bc3e13a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdedb86c130176aa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/page.tsx:173"}, "properties": {"repobilityId": "3b0278c1c6de1968", "scanner": "scanner-primary", "fingerprint": "cdedb86c130176aa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ae2b40468a13a5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/docs/quickstart/page.tsx:179"}, "properties": {"repobilityId": "325a5a4b4328e50a", "scanner": "scanner-primary", "fingerprint": "4ae2b40468a13a5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-099306e3ac55fb3c", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/dashboard/integrations/page.tsx:585"}, "properties": {"repobilityId": "b7a4953a13e6237e", "scanner": "scanner-primary", "fingerprint": "099306e3ac55fb3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3a856d3bb50f13d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/signup/page.tsx:54"}, "properties": {"repobilityId": "7c2a265c6d83db65", "scanner": "scanner-primary", "fingerprint": "d3a856d3bb50f13d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa628dfee09e97ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sandbox/results/[id]/page.tsx:15"}, "properties": {"repobilityId": "7183588be2685c55", "scanner": "scanner-primary", "fingerprint": "fa628dfee09e97ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fc5605d3e6fe0013", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/app/proof/transformation/page.tsx:18"}, "properties": {"repobilityId": "7ad6b951d5565bbb", "scanner": "scanner-primary", "fingerprint": "fc5605d3e6fe0013", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76aba5d67020749e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/page.tsx:35"}, "properties": {"repobilityId": "6cfc41e44bf0996c", "scanner": "scanner-primary", "fingerprint": "76aba5d67020749e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c5883bc9b54e44f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/playground/page.tsx:413"}, "properties": {"repobilityId": "8d86e0cefdf629b1", "scanner": "scanner-primary", "fingerprint": "c5883bc9b54e44f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37f74ec8af876919", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/usage/page.tsx:38"}, "properties": {"repobilityId": "e42d0e61d8a195e4", "scanner": "scanner-primary", "fingerprint": "37f74ec8af876919", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98cf24ca6ff4644b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/codegen/page.tsx:57"}, "properties": {"repobilityId": "a593cef0e976ed6d", "scanner": "scanner-primary", "fingerprint": "98cf24ca6ff4644b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-430390f243c2ce0b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/developer/portal/keys/page.tsx:37"}, "properties": {"repobilityId": "0f63a85dfbf4b732", "scanner": "scanner-primary", "fingerprint": "430390f243c2ce0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6cce9f53109cbc85", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in frontend/src/app/trust/page.tsx:483"}, "properties": {"repobilityId": "5249c57e1c8c8782", "scanner": "scanner-primary", "fingerprint": "6cce9f53109cbc85", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be9d5dbc70aba2e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/tools/inflow-lab/components/DashboardInflowLab.tsx:735"}, "properties": {"repobilityId": "afac333bbff7be22", "scanner": "scanner-primary", "fingerprint": "be9d5dbc70aba2e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7da512fb10a4e776", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/tools/sop-generator/components/SOPGeneratorClient.tsx:60"}, "properties": {"repobilityId": "44f6efb530ff6688", "scanner": "scanner-primary", "fingerprint": "7da512fb10a4e776", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c90694920f6affca", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/tools/ftl-checker/components/FTLCheckerClient.tsx:77"}, "properties": {"repobilityId": "d973cf93f8e63f0a", "scanner": "scanner-primary", "fingerprint": "c90694920f6affca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90e165551d75ab57", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/api-proxy.ts:42"}, "properties": {"repobilityId": "f9c36d43fcf2bb8c", "scanner": "scanner-primary", "fingerprint": "90e165551d75ab57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d37c2c643a4d4bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/auth-context.tsx:381"}, "properties": {"repobilityId": "c70b5a485cfc9c67", "scanner": "scanner-primary", "fingerprint": "8d37c2c643a4d4bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07a8032c797b9a99", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in frontend/src/lib/customer-readiness.ts:64"}, "properties": {"repobilityId": "79e9f88d3d9aea03", "scanner": "scanner-primary", "fingerprint": "07a8032c797b9a99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3ffca4e4ae5e1cee", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/customer-readiness.ts:403"}, "properties": {"repobilityId": "e51345e2b029caed", "scanner": "scanner-primary", "fingerprint": "3ffca4e4ae5e1cee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1b4228ccbaad906", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/api-client.ts:498"}, "properties": {"repobilityId": "5461e63ec671031a", "scanner": "scanner-primary", "fingerprint": "f1b4228ccbaad906", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-731001781d066956", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/fetch-with-csrf.ts:21"}, "properties": {"repobilityId": "94fe98a09ea8b4e8", "scanner": "scanner-primary", "fingerprint": "731001781d066956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d08b9fd80310965e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/lib/analytics.ts:3"}, "properties": {"repobilityId": "28692a77ab0fa52e", "scanner": "scanner-primary", "fingerprint": "d08b9fd80310965e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16c793d9531e252b", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in tests/test_server_idempotency_middleware.py:3"}, "properties": {"repobilityId": "d1ce07cf152aafa5", "scanner": "scanner-primary", "fingerprint": "16c793d9531e252b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b4dceeec6dedb86d", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/security/test_tenant_isolation_phase1.py:48"}, "properties": {"repobilityId": "b519a7bca5773d55", "scanner": "scanner-primary", "fingerprint": "b4dceeec6dedb86d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-703799ab5b419cc5", "level": "note", "message": {"text": "Legacy-named symbol `rule_v1` in tests/invariants/test_invariants.py:171"}, "properties": {"repobilityId": "b599ad53b3c3af30", "scanner": "scanner-primary", "fingerprint": "703799ab5b419cc5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-75581722cb87cc1c", "level": "note", "message": {"text": "Legacy-named symbol `test_core_module_header_not_legacy` in tests/shared/test_cte_persistence_cluster_1323_1324_1334_1335.py:276"}, "properties": {"repobilityId": "db1612da10ffae9a", "scanner": "scanner-primary", "fingerprint": "75581722cb87cc1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cfc7d97c7837396c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/shared/test_canonical_persistence_hardening.py:427"}, "properties": {"repobilityId": "f26671f657b5563f", "scanner": "scanner-primary", "fingerprint": "cfc7d97c7837396c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14bbd7f647984f6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/shared/test_rules_seeds_per_cte_coverage.py:30"}, "properties": {"repobilityId": "15c66f51a3cb32cc", "scanner": "scanner-primary", "fingerprint": "14bbd7f647984f6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bddc2e956d97c758", "level": "note", "message": {"text": "Legacy-named symbol `rge_live_legacy` in tests/shared/test_api_key_store.py:295"}, "properties": {"repobilityId": "55cc5a43b2f92cd3", "scanner": "scanner-primary", "fingerprint": "bddc2e956d97c758", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6bee6aac1add78b0", "level": "note", "message": {"text": "Legacy-named symbol `legacy_regex_v1` in tests/shared/test_nlp_extraction_pg_pipeline.py:282"}, "properties": {"repobilityId": "6876ef9e60d16371", "scanner": "scanner-primary", "fingerprint": "6bee6aac1add78b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d42f2d9f6f6337e", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/shared/test_rules_engine_hardening.py:78"}, "properties": {"repobilityId": "a541e1109e745dc5", "scanner": "scanner-primary", "fingerprint": "4d42f2d9f6f6337e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffb41940ff153bfc", "level": "note", "message": {"text": "Legacy-named symbol `dual_write_legacy` in tests/shared/test_canonical_dual_write_strict_1277.py:2"}, "properties": {"repobilityId": "6316dbd8e7e817d6", "scanner": "scanner-primary", "fingerprint": "ffb41940ff153bfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b6171d64072a1e38", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/shared/test_canonical_event_idempotency_key.py:88"}, "properties": {"repobilityId": "8b2d96ec486b5e0f", "scanner": "scanner-primary", "fingerprint": "b6171d64072a1e38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53846c46877dcaa9", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/load/test_trace_latency.py:22"}, "properties": {"repobilityId": "d8237af74a7d6da3", "scanner": "scanner-primary", "fingerprint": "53846c46877dcaa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7568081bc7f81498", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/audit/verify_chain.py:131"}, "properties": {"repobilityId": "050c103a31d687f5", "scanner": "scanner-primary", "fingerprint": "7568081bc7f81498", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe6591a5c18affe7", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/migrations/test_rls_hardening.py:38"}, "properties": {"repobilityId": "5e0571bf83931922", "scanner": "scanner-primary", "fingerprint": "fe6591a5c18affe7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cde5a3e6f0700ad2", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/migrations/test_rls_coverage.py:60"}, "properties": {"repobilityId": "9b3e56aeb79ed7dd", "scanner": "scanner-primary", "fingerprint": "cde5a3e6f0700ad2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e5fd0793135116c", "level": "note", "message": {"text": "Legacy-named symbol `payload_v1` in tests/data_integrity/test_fsma_204_freshness_phase3b.py:69"}, "properties": {"repobilityId": "dc839b669774bf27", "scanner": "scanner-primary", "fingerprint": "3e5fd0793135116c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c718aae59bc57e4c", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/data_integrity/test_fsma_204_freshness_phase3b.py:112"}, "properties": {"repobilityId": "52366405ebf5c328", "scanner": "scanner-primary", "fingerprint": "c718aae59bc57e4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2aa305aaf62559c8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 regengine/swarm/coordinator.py:157"}, "properties": {"repobilityId": "ec61300eefffe18b", "scanner": "scanner-primary", "fingerprint": "2aa305aaf62559c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-71ab5fd709ce44d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in qa/tenant-test.js:125"}, "properties": {"repobilityId": "7f79d0f873fe1f5b", "scanner": "scanner-primary", "fingerprint": "71ab5fd709ce44d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e98c546331e7a1c2", "level": "note", "message": {"text": "Legacy-named symbol `energy_nerc_cip_v1` in scripts/verify_fsma_only.py:37"}, "properties": {"repobilityId": "412f135f881587e5", "scanner": "scanner-primary", "fingerprint": "e98c546331e7a1c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ae05a63762ebabdd", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in scripts/verify_inflow_to_regengine_e2e.py:161"}, "properties": {"repobilityId": "6fc1cc4fe955c1ac", "scanner": "scanner-primary", "fingerprint": "ae05a63762ebabdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-42530cece17120b4", "level": "note", "message": {"text": "Stub function `_local_subscription` (body is just `pass`/`return`) \u2014 scripts/verify_inflow_to_regengine_e2e.py:180"}, "properties": {"repobilityId": "5967edadadc39eea", "scanner": "scanner-primary", "fingerprint": "42530cece17120b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-1300170cb8f18f1b", "level": "note", "message": {"text": "Legacy-named symbol `doc_v1` in scripts/demo_freshness.py:106"}, "properties": {"repobilityId": "5bbafb9cc9d70846", "scanner": "scanner-primary", "fingerprint": "1300170cb8f18f1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ae600e4a7966c5dc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/sentinel-backfill.py:79"}, "properties": {"repobilityId": "01bbbd671aa38b4b", "scanner": "scanner-primary", "fingerprint": "ae600e4a7966c5dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd0f807bc64f16bf", "level": "note", "message": {"text": "Legacy-named symbol `seed_v1` in scripts/seed_v1_data.py:25"}, "properties": {"repobilityId": "7322fb9a5c07c215", "scanner": "scanner-primary", "fingerprint": "cd0f807bc64f16bf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3008642a6824ed05", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check_tenant_id_uuid_only.py:52"}, "properties": {"repobilityId": "85c440bee566385d", "scanner": "scanner-primary", "fingerprint": "3008642a6824ed05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6932b301ebc8a525", "level": "note", "message": {"text": "Legacy-named symbol `nLegacy` in scripts/check_legacy_dead_code.py:479"}, "properties": {"repobilityId": "ed3eba18227f07ae", "scanner": "scanner-primary", "fingerprint": "6932b301ebc8a525", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b357ff8d3c3c69da", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/verify_production_readiness.py:315"}, "properties": {"repobilityId": "ee2f2a440d7e5819", "scanner": "scanner-primary", "fingerprint": "b357ff8d3c3c69da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04910efc1ffe49cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/e2e_tests.js:83"}, "properties": {"repobilityId": "759cd31b92b9dba9", "scanner": "scanner-primary", "fingerprint": "04910efc1ffe49cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8bea3c99a98eae3", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/e2e_brutal_scenario.py:78"}, "properties": {"repobilityId": "6fd45866538fa6f5", "scanner": "scanner-primary", "fingerprint": "b8bea3c99a98eae3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d69120b8aac987e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/e2e_brutal_scenario.py:168"}, "properties": {"repobilityId": "1d89725769b850c8", "scanner": "scanner-primary", "fingerprint": "4d69120b8aac987e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00af0d3bd103695b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/seed_demo.js:155"}, "properties": {"repobilityId": "caaa7878c17d3dd2", "scanner": "scanner-primary", "fingerprint": "00af0d3bd103695b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf9dccdfd9dfa742", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scheduler/fsma_auto_ingest.py:276"}, "properties": {"repobilityId": "fbcb3e1548babde9", "scanner": "scanner-primary", "fingerprint": "bf9dccdfd9dfa742", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f9706b8110563bc", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in server/main.py:211"}, "properties": {"repobilityId": "2e7e1dba15d311d5", "scanner": "scanner-primary", "fingerprint": "1f9706b8110563bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0075ed42b9debaa", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/main.py:90"}, "properties": {"repobilityId": "283a42d6946aa2ce", "scanner": "scanner-primary", "fingerprint": "f0075ed42b9debaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6462467a44a1ac8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/workers/embedded_scheduler.py:75"}, "properties": {"repobilityId": "9fbfe0471a13aeb2", "scanner": "scanner-primary", "fingerprint": "6462467a44a1ac8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8463aa1615e48ffa", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/workers/task_processor.py:44"}, "properties": {"repobilityId": "13dd9ea7a24658e3", "scanner": "scanner-primary", "fingerprint": "8463aa1615e48ffa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bf2e350d65188b0", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/nlp/app/resolution.py:73"}, "properties": {"repobilityId": "bb02eda8aa32b241", "scanner": "scanner-primary", "fingerprint": "8bf2e350d65188b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e4f53ccab37c57d", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/nlp/app/extractors/llm_extractor.py:19"}, "properties": {"repobilityId": "93047c2e6cc103e0", "scanner": "scanner-primary", "fingerprint": "9e4f53ccab37c57d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a04a43c63832a8aa", "level": "note", "message": {"text": "Stub function `generate` (body is just `pass`/`return`) \u2014 services/nlp/app/extractors/llm_extractor.py:253"}, "properties": {"repobilityId": "194cd3731606f15b", "scanner": "scanner-primary", "fingerprint": "a04a43c63832a8aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-ef2b151b5c2c434b", "level": "none", "message": {"text": "Commented-code block (14 lines) in services/nlp/app/extractors/fsma_extractor/entity_resolution.py:88"}, "properties": {"repobilityId": "12d671e0c935c97b", "scanner": "scanner-primary", "fingerprint": "ef2b151b5c2c434b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8e23961d20d60d6", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/nlp/app/extractors/fsma_extractor/classification.py:9"}, "properties": {"repobilityId": "68dfd29df0c77892", "scanner": "scanner-primary", "fingerprint": "f8e23961d20d60d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a925aedc46d35bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/nlp/app/extractors/fsma_extractor/patterns.py:37"}, "properties": {"repobilityId": "4b68737eb17fb629", "scanner": "scanner-primary", "fingerprint": "2a925aedc46d35bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42dd37f47d2ff0f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/extractors/fsma_extractor/cte_builder.py:40"}, "properties": {"repobilityId": "a48b1619efe789cf", "scanner": "scanner-primary", "fingerprint": "42dd37f47d2ff0f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f8fc12b4176403e", "level": "note", "message": {"text": "Legacy-named symbol `signed_legacy` in services/nlp/app/consumer/__init__.py:853"}, "properties": {"repobilityId": "17101c88d0335b57", "scanner": "scanner-primary", "fingerprint": "6f8fc12b4176403e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-83d9587effede756", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/__init__.py:162"}, "properties": {"repobilityId": "fa76686f7b50a2ea", "scanner": "scanner-primary", "fingerprint": "83d9587effede756", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cce06ea3de2dd43f", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/health.py:29"}, "properties": {"repobilityId": "0e46d04d6577a7fe", "scanner": "scanner-primary", "fingerprint": "cce06ea3de2dd43f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0fc6ca74fb8f09b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/constants.py:24"}, "properties": {"repobilityId": "e8fc0e1ba91bcf5d", "scanner": "scanner-primary", "fingerprint": "c0fc6ca74fb8f09b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2facfcb8a93f7ef", "level": "note", "message": {"text": "Legacy-named symbol `legacy_regex_v1` in services/nlp/app/consumer/conversion.py:192"}, "properties": {"repobilityId": "ff483300972f8dd3", "scanner": "scanner-primary", "fingerprint": "e2facfcb8a93f7ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-77956cac9f985380", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/conversion.py:73"}, "properties": {"repobilityId": "0a6c87bbaf5a60e4", "scanner": "scanner-primary", "fingerprint": "77956cac9f985380", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80ca2273ae7b5f1d", "level": "note", "message": {"text": "Legacy-named symbol `nlp_model_v1` in services/nlp/app/consumer/review_routing.py:85"}, "properties": {"repobilityId": "c40d686d125abf41", "scanner": "scanner-primary", "fingerprint": "80ca2273ae7b5f1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d967b36b96e2a8b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/nlp/app/consumer/thresholds.py:15"}, "properties": {"repobilityId": "d27d0058234fba48", "scanner": "scanner-primary", "fingerprint": "d967b36b96e2a8b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d76cc82d16bfc39e", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/nlp/app/consumer/tenancy.py:64"}, "properties": {"repobilityId": "c3e532c0319be5fb", "scanner": "scanner-primary", "fingerprint": "d76cc82d16bfc39e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99384d639d50b4f5", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/shared/database.py:101"}, "properties": {"repobilityId": "25e83a6d2d1004b2", "scanner": "scanner-primary", "fingerprint": "99384d639d50b4f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1f52687e06fbfdd", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/shared/api_key_store.py:123"}, "properties": {"repobilityId": "76401f10ac40bd3e", "scanner": "scanner-primary", "fingerprint": "a1f52687e06fbfdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3d15b3739724a9c", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/kafka_auth.py:140"}, "properties": {"repobilityId": "ff054a833e6ee9db", "scanner": "scanner-primary", "fingerprint": "e3d15b3739724a9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a40fe35b5558a4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/canonical_event.py:50"}, "properties": {"repobilityId": "0dc6540be4823835", "scanner": "scanner-primary", "fingerprint": "5a40fe35b5558a4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5813e6b013c96126", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/tenant_settings.py:32"}, "properties": {"repobilityId": "ca7138a5291d468d", "scanner": "scanner-primary", "fingerprint": "5813e6b013c96126", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23428bb7158a7254", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/idempotency.py:35"}, "properties": {"repobilityId": "9e86e5803b70284b", "scanner": "scanner-primary", "fingerprint": "23428bb7158a7254", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3385b65043f6f169", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/neo4j_tenant_context.py:55"}, "properties": {"repobilityId": "5414479acf261eb2", "scanner": "scanner-primary", "fingerprint": "3385b65043f6f169", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-888e25b2dabf4849", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/tenant_context.py:317"}, "properties": {"repobilityId": "d7295ab99731be0d", "scanner": "scanner-primary", "fingerprint": "888e25b2dabf4849", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4269c5f821bca886", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/shared/pii.py:70"}, "properties": {"repobilityId": "c91ca94da774f43d", "scanner": "scanner-primary", "fingerprint": "4269c5f821bca886", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e8bff04e4371c2", "level": "note", "message": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/tests/test_legacy_dual_write_rename_1293.py:25"}, "properties": {"repobilityId": "bbc14da90c6fd85b", "scanner": "scanner-primary", "fingerprint": "d7e8bff04e4371c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-432af8f73139fb73", "level": "note", "message": {"text": "Legacy-named symbol `test_old_payload_without_schema_version_parses_as_v1` in services/shared/tests/test_canonical_event_schema_version_1197.py:173"}, "properties": {"repobilityId": "70b6cd5d832c1507", "scanner": "scanner-primary", "fingerprint": "432af8f73139fb73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-003474d5c52240cc", "level": "note", "message": {"text": "Legacy-named symbol `test_mixed_per_service_and_legacy` in services/shared/tests/test_kafka_auth_kid.py:165"}, "properties": {"repobilityId": "13d59fa04e79d29f", "scanner": "scanner-primary", "fingerprint": "003474d5c52240cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d96a2578a627bada", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/tests/test_rules_enforcement_manifest.py:106"}, "properties": {"repobilityId": "ad24fdaec7984da6", "scanner": "scanner-primary", "fingerprint": "d96a2578a627bada", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-394b3833b10ba109", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/middleware/security.py:15"}, "properties": {"repobilityId": "7d4aaa90234525f1", "scanner": "scanner-primary", "fingerprint": "394b3833b10ba109", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b43ffc6f79c60c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/rules/engine.py:78"}, "properties": {"repobilityId": "6e98bb5e32b0cefc", "scanner": "scanner-primary", "fingerprint": "9b43ffc6f79c60c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-271b72b345ce5756", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/rules/enforcement.py:57"}, "properties": {"repobilityId": "ea118413696ed9b5", "scanner": "scanner-primary", "fingerprint": "271b72b345ce5756", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c11066e776f8d749", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/shared/rules/enforcement.py:41"}, "properties": {"repobilityId": "4da5deab13e6de65", "scanner": "scanner-primary", "fingerprint": "c11066e776f8d749", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08ef9e2a366e9438", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/constants.py:27"}, "properties": {"repobilityId": "b043148591123a5e", "scanner": "scanner-primary", "fingerprint": "08ef9e2a366e9438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9efab88654a6cbb5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/normalization.py:15"}, "properties": {"repobilityId": "a4519341e47a3607", "scanner": "scanner-primary", "fingerprint": "9efab88654a6cbb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-449d960c077bc0aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/identity_resolution/merging.py:123"}, "properties": {"repobilityId": "4ea7aeae55492482", "scanner": "scanner-primary", "fingerprint": "449d960c077bc0aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77e74249ed83f771", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/matching.py:125"}, "properties": {"repobilityId": "1193e40a8e869aef", "scanner": "scanner-primary", "fingerprint": "77e74249ed83f771", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bebf5530a886f809", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/identity_resolution/review.py:99"}, "properties": {"repobilityId": "5d3436004ecc23b4", "scanner": "scanner-primary", "fingerprint": "bebf5530a886f809", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f336c78b04737af", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/resolver.py:249"}, "properties": {"repobilityId": "f091b5452865b019", "scanner": "scanner-primary", "fingerprint": "1f336c78b04737af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6667923da736bcbe", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/identity_resolution/service.py:56"}, "properties": {"repobilityId": "65673c027e165a0d", "scanner": "scanner-primary", "fingerprint": "6667923da736bcbe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22ff92e502894fda", "level": "note", "message": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/legacy_dual_write.py:14"}, "properties": {"repobilityId": "62710210fe2f01e5", "scanner": "scanner-primary", "fingerprint": "22ff92e502894fda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-293c23a3528dce94", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/shared/canonical_persistence/legacy_dual_write.py:212"}, "properties": {"repobilityId": "5c36e6a92e3eb25c", "scanner": "scanner-primary", "fingerprint": "293c23a3528dce94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef9259172bf973d5", "level": "note", "message": {"text": "Legacy-named symbol `dual_write_legacy` in services/shared/canonical_persistence/writer.py:340"}, "properties": {"repobilityId": "823cf27e34bd168a", "scanner": "scanner-primary", "fingerprint": "ef9259172bf973d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1806e60426e9064e", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/shared/canonical_persistence/writer.py:588"}, "properties": {"repobilityId": "9793a9fd44243020", "scanner": "scanner-primary", "fingerprint": "1806e60426e9064e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf09f46e472e1b2b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/verification.py:156"}, "properties": {"repobilityId": "29d31069d196e47f", "scanner": "scanner-primary", "fingerprint": "cf09f46e472e1b2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3d5f95c9e30338d", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/hashing.py:36"}, "properties": {"repobilityId": "b75eb723ef3abd39", "scanner": "scanner-primary", "fingerprint": "d3d5f95c9e30338d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf8e0a5a52ad070a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/cte_persistence/batch.py:77"}, "properties": {"repobilityId": "2145573b56004f9c", "scanner": "scanner-primary", "fingerprint": "cf8e0a5a52ad070a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-911995dc45904c4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/shared/cte_persistence/queries.py:30"}, "properties": {"repobilityId": "d004cf5fc191d1d1", "scanner": "scanner-primary", "fingerprint": "911995dc45904c4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e026973e91cdf69f", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/core.py:8"}, "properties": {"repobilityId": "3de789cd2fc0f30a", "scanner": "scanner-primary", "fingerprint": "e026973e91cdf69f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bebe44d58a2de03f", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/shared/cte_persistence/core.py:4"}, "properties": {"repobilityId": "6d04dcd8069fd98c", "scanner": "scanner-primary", "fingerprint": "bebe44d58a2de03f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58ca1977d221532d", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/shared/cte_persistence/tests/test_append_only_1334_1335.py:9"}, "properties": {"repobilityId": "15a3294328bfec5a", "scanner": "scanner-primary", "fingerprint": "58ca1977d221532d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0bb7704e849b87e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/fda_export/windows.py:67"}, "properties": {"repobilityId": "c2f9a77fc3e71a9d", "scanner": "scanner-primary", "fingerprint": "0bb7704e849b87e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3c8450f4584ab12e", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/shared/fda_export/pii.py:41"}, "properties": {"repobilityId": "236dc702d49c44ac", "scanner": "scanner-primary", "fingerprint": "3c8450f4584ab12e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fafd006476579269", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/compliance/app/routes.py:36"}, "properties": {"repobilityId": "0b8e18f9dab1d4f0", "scanner": "scanner-primary", "fingerprint": "fafd006476579269", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-302f7b094994dcd6", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/main.py:131"}, "properties": {"repobilityId": "a9d89b4a8bace8f1", "scanner": "scanner-primary", "fingerprint": "302f7b094994dcd6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ba18e3a26d0c0a06", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/main.py:139"}, "properties": {"repobilityId": "fa6b0f2bdce8ae5b", "scanner": "scanner-primary", "fingerprint": "ba18e3a26d0c0a06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-378f207c6b54beb7", "level": "note", "message": {"text": "Legacy-named symbol `cs_old` in services/ingestion/tests/test_stripe_customers_1342.py:407"}, "properties": {"repobilityId": "ea842e50340649ce", "scanner": "scanner-primary", "fingerprint": "378f207c6b54beb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f400d1f7974b6b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_customers_1342.py:301"}, "properties": {"repobilityId": "b1bc7ec3a5270975", "scanner": "scanner-primary", "fingerprint": "4f400d1f7974b6b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b101215a53ab9a7c", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_gln_check_digit.py:32"}, "properties": {"repobilityId": "9f6f38ae484a0750", "scanner": "scanner-primary", "fingerprint": "b101215a53ab9a7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23f4e797dbbf7d20", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_validation_1342.py:522"}, "properties": {"repobilityId": "df5978c6b3f94ad5", "scanner": "scanner-primary", "fingerprint": "23f4e797dbbf7d20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0945238a7f4f0e8c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_pipeline_1342.py:454"}, "properties": {"repobilityId": "035498a3b4c53317", "scanner": "scanner-primary", "fingerprint": "0945238a7f4f0e8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85842332721c5982", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_trailing_lows_infos.py:32"}, "properties": {"repobilityId": "62c4fec82a430e4f", "scanner": "scanner-primary", "fingerprint": "85842332721c5982", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f3fff1916a8f119", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_enforcement.py:2"}, "properties": {"repobilityId": "12d89ef0c916f584", "scanner": "scanner-primary", "fingerprint": "9f3fff1916a8f119", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2555213761bd8d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_epcis_persistence_1342.py:54"}, "properties": {"repobilityId": "bdffa5411d65b78b", "scanner": "scanner-primary", "fingerprint": "d2555213761bd8d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89f198f0290d5213", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_proof_recall_router.py:89"}, "properties": {"repobilityId": "f57c0648a406b432", "scanner": "scanner-primary", "fingerprint": "89f198f0290d5213", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dac92dec0911fde", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_canonical_router_1342.py:465"}, "properties": {"repobilityId": "f025f78a3f204343", "scanner": "scanner-primary", "fingerprint": "2dac92dec0911fde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32a79f8291e12109", "level": "note", "message": {"text": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/tests/test_stripe_routes_1342.py:445"}, "properties": {"repobilityId": "f0e9226e15001453", "scanner": "scanner-primary", "fingerprint": "32a79f8291e12109", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4de375b0b8db3ee8", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_1342.py:1"}, "properties": {"repobilityId": "9ee3be85a6cd0042", "scanner": "scanner-primary", "fingerprint": "4de375b0b8db3ee8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3c1ceea8b4c27388", "level": "note", "message": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_formatters_1342.py:101"}, "properties": {"repobilityId": "cf6c3e4634ada081", "scanner": "scanner-primary", "fingerprint": "3c1ceea8b4c27388", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-09f2c4aa7a175821", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/ingestion/tests/test_identity_router.py:112"}, "properties": {"repobilityId": "2325321cbb2bdf2d", "scanner": "scanner-primary", "fingerprint": "09f2c4aa7a175821", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5a59200d4a7a005", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_helpers_1342.py:140"}, "properties": {"repobilityId": "97fcba542db6a052", "scanner": "scanner-primary", "fingerprint": "c5a59200d4a7a005", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a52acc5895ffc0c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_models_ssrf_1342.py:265"}, "properties": {"repobilityId": "597380f098f90c1e", "scanner": "scanner-primary", "fingerprint": "a52acc5895ffc0c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e8f9a08293d572f", "level": "note", "message": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/tests/test_fda_export_service_1342.py:18"}, "properties": {"repobilityId": "811d953d89bc490c", "scanner": "scanner-primary", "fingerprint": "3e8f9a08293d572f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-04eb09119cb885d0", "level": "note", "message": {"text": "Legacy-named symbol `sub_bad_old` in services/ingestion/tests/test_stripe_state_1342.py:441"}, "properties": {"repobilityId": "6ce353b86d3b8d06", "scanner": "scanner-primary", "fingerprint": "04eb09119cb885d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a06951f5a9b4b4ee", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_inflow_lab_contract.py:7"}, "properties": {"repobilityId": "d310ff8b92751e4e", "scanner": "scanner-primary", "fingerprint": "a06951f5a9b4b4ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b0baf422589016ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_sandbox_router_1342.py:80"}, "properties": {"repobilityId": "fe4ca4231e282558", "scanner": "scanner-primary", "fingerprint": "b0baf422589016ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e6ffa53989daa7", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_canonical_helper.py:28"}, "properties": {"repobilityId": "a9690b41288f461f", "scanner": "scanner-primary", "fingerprint": "d7e6ffa53989daa7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-80df8be79a3af562", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_rate_limit.py:14"}, "properties": {"repobilityId": "eab2d4639b6f268b", "scanner": "scanner-primary", "fingerprint": "80df8be79a3af562", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dbba69426c607d1f", "level": "note", "message": {"text": "Legacy-named symbol `export_fda_spreadsheet_v2` in services/ingestion/tests/test_fda_export_router_1342.py:15"}, "properties": {"repobilityId": "5464185cdc69b07d", "scanner": "scanner-primary", "fingerprint": "dbba69426c607d1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-87bd3b2bb97a0b78", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_fda_export_router_1342.py:159"}, "properties": {"repobilityId": "de0ce81ded114cbe", "scanner": "scanner-primary", "fingerprint": "87bd3b2bb97a0b78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e39e1f3f0ac471b", "level": "note", "message": {"text": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/tests/test_fda_export_pii_redaction.py:49"}, "properties": {"repobilityId": "6a913bf768e8f281", "scanner": "scanner-primary", "fingerprint": "0e39e1f3f0ac471b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4a8ea430bcec41e", "level": "note", "message": {"text": "Legacy-named symbol `api_v2` in services/ingestion/tests/test_fda_export_queries_1342.py:883"}, "properties": {"repobilityId": "4c85099ccce1e564", "scanner": "scanner-primary", "fingerprint": "d4a8ea430bcec41e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bab0eff4df2fdf1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_fda_export_queries_1342.py:438"}, "properties": {"repobilityId": "0a51e34817c98ada", "scanner": "scanner-primary", "fingerprint": "bab0eff4df2fdf1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14da912fc1c5aac5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_epcis_validation_1342.py:425"}, "properties": {"repobilityId": "174446e3ff994b9a", "scanner": "scanner-primary", "fingerprint": "14da912fc1c5aac5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5aab9a9a70bc8290", "level": "note", "message": {"text": "Legacy-named symbol `events_v1` in services/ingestion/tests/test_cte_persistence_e2e.py:716"}, "properties": {"repobilityId": "c244eda37686aa99", "scanner": "scanner-primary", "fingerprint": "5aab9a9a70bc8290", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ee90a8171d6b161", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_funnel_events.py:17"}, "properties": {"repobilityId": "c5c5aec9fb07222e", "scanner": "scanner-primary", "fingerprint": "6ee90a8171d6b161", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8ea43e6fd7aac302", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/tests/test_edi_parser_segment_cap_1171.py:126"}, "properties": {"repobilityId": "f640cb8a76e20309", "scanner": "scanner-primary", "fingerprint": "8ea43e6fd7aac302", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3936d92034c7004d", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_router_v2_idor_f1.py:31"}, "properties": {"repobilityId": "2faa698352660db0", "scanner": "scanner-primary", "fingerprint": "3936d92034c7004d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08bfaef555bd7ec8", "level": "note", "message": {"text": "Legacy-named symbol `test_send_link_db_read_ok_write_fails_with_no_memory_copy` in services/ingestion/tests/test_supplier_mgmt_1342.py:354"}, "properties": {"repobilityId": "9cf8973cc8fef79f", "scanner": "scanner-primary", "fingerprint": "08bfaef555bd7ec8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7d2263799482ecba", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/ingestion/tests/test_recall_report_1342.py:81"}, "properties": {"repobilityId": "b8859612fb839a77", "scanner": "scanner-primary", "fingerprint": "7d2263799482ecba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a270efd8df6c838", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_replay_metric.py:29"}, "properties": {"repobilityId": "4790e49b0bbf910f", "scanner": "scanner-primary", "fingerprint": "1a270efd8df6c838", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9c92915e4835ffcf", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_verify_api_key_1888.py:1"}, "properties": {"repobilityId": "d8597c9b16f78b40", "scanner": "scanner-primary", "fingerprint": "9c92915e4835ffcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed9d65c40a822a02", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_webhook_hmac_and_replay.py:26"}, "properties": {"repobilityId": "0ff7dc0489eed82e", "scanner": "scanner-primary", "fingerprint": "ed9d65c40a822a02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c6d3252d5589f44b", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/tests/test_s3_utils_1342.py:111"}, "properties": {"repobilityId": "199adc3b4c7bec09", "scanner": "scanner-primary", "fingerprint": "c6d3252d5589f44b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0bcf69fed9293072", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_smoke_ingestion.py:27"}, "properties": {"repobilityId": "cd184a194e24cc4b", "scanner": "scanner-primary", "fingerprint": "0bcf69fed9293072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5225df665d12c974", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_qr_decoder_1342.py:180"}, "properties": {"repobilityId": "e89ff145b733db5c", "scanner": "scanner-primary", "fingerprint": "5225df665d12c974", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4adbe48f2d849741", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_stripe_plans_1342.py:180"}, "properties": {"repobilityId": "e10d765f365f12e6", "scanner": "scanner-primary", "fingerprint": "4adbe48f2d849741", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6b9d0844358e144", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/tests/test_task_handlers_regulation_1342.py:65"}, "properties": {"repobilityId": "c75018778909a404", "scanner": "scanner-primary", "fingerprint": "b6b9d0844358e144", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dd8c0a2e4a21318", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/tests/test_dual_write_timeout_1335.py:16"}, "properties": {"repobilityId": "4d4315d8149a47cc", "scanner": "scanner-primary", "fingerprint": "6dd8c0a2e4a21318", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-480a53a1d04aa506", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/tests/test_state_generic_scraper_1342.py:309"}, "properties": {"repobilityId": "af94cda723805b71", "scanner": "scanner-primary", "fingerprint": "480a53a1d04aa506", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79f8623abe37d01f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 services/ingestion/scripts/verify_stripe_billing_e2e.py:141"}, "properties": {"repobilityId": "a592ee45ed1ba160", "scanner": "scanner-primary", "fingerprint": "79f8623abe37d01f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20ff0d7fd31c8407", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/scripts/verify_pipeline.py:53"}, "properties": {"repobilityId": "e10c419b302a6d4e", "scanner": "scanner-primary", "fingerprint": "20ff0d7fd31c8407", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-12cdf55d2da17877", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/routes.py:23"}, "properties": {"repobilityId": "ccb49b1f345909c8", "scanner": "scanner-primary", "fingerprint": "12cdf55d2da17877", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-765484e36cdda4cf", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/exception_router.py:37"}, "properties": {"repobilityId": "06cdf0a484b4e31f", "scanner": "scanner-primary", "fingerprint": "765484e36cdda4cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f3d7dcf3f754a960", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/canonical_router.py:453"}, "properties": {"repobilityId": "660641c3572f5154", "scanner": "scanner-primary", "fingerprint": "f3d7dcf3f754a960", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d97fcfcd5154e35a", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/compliance_score.py:123"}, "properties": {"repobilityId": "d1cd5debeffdf4b0", "scanner": "scanner-primary", "fingerprint": "d97fcfcd5154e35a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af4324dd7f7a11fd", "level": "note", "message": {"text": "Legacy-named symbol `_event_to_fda_row_v2` in services/ingestion/app/fda_export_service.py:786"}, "properties": {"repobilityId": "6ff04576897f88d9", "scanner": "scanner-primary", "fingerprint": "af4324dd7f7a11fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-986f776891e3f36d", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/fda_export_service.py:86"}, "properties": {"repobilityId": "9165e7803e530787", "scanner": "scanner-primary", "fingerprint": "986f776891e3f36d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52d2c726c471ed83", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_compat.py:7"}, "properties": {"repobilityId": "bc67e308f7f27dbb", "scanner": "scanner-primary", "fingerprint": "52d2c726c471ed83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-053e958385bff71f", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_compat.py:187"}, "properties": {"repobilityId": "5a2912665a9328af", "scanner": "scanner-primary", "fingerprint": "053e958385bff71f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2002abd630ba1254", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/identity_router.py:36"}, "properties": {"repobilityId": "c1769e7c36e900b4", "scanner": "scanner-primary", "fingerprint": "2002abd630ba1254", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2bb67b5ebb99f65f", "level": "note", "message": {"text": "Legacy-named symbol `ingesting_regulation_v2` in services/ingestion/app/regulation_loader.py:201"}, "properties": {"repobilityId": "4d976c8ffbdd7c93", "scanner": "scanner-primary", "fingerprint": "2bb67b5ebb99f65f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-12b5b4aab07facbe", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/request_workflow_router.py:39"}, "properties": {"repobilityId": "64bd5cb870d6f607", "scanner": "scanner-primary", "fingerprint": "12b5b4aab07facbe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-87260884c269280c", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/routes_health_metrics.py:59"}, "properties": {"repobilityId": "2297305023f5a0bd", "scanner": "scanner-primary", "fingerprint": "87260884c269280c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c65da02e03a6c5d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/authz.py:182"}, "properties": {"repobilityId": "d1ae241b59f05983", "scanner": "scanner-primary", "fingerprint": "c65da02e03a6c5d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a134bb88615d6b97", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in services/ingestion/app/integration_router.py:420"}, "properties": {"repobilityId": "5914014333c2b192", "scanner": "scanner-primary", "fingerprint": "a134bb88615d6b97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-10da59360e125577", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/ingestion/app/exchange_api.py:498"}, "properties": {"repobilityId": "202ea1147592b38a", "scanner": "scanner-primary", "fingerprint": "10da59360e125577", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0194fa07826033f5", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in services/ingestion/app/s3_utils.py:369"}, "properties": {"repobilityId": "331e48a23a003bf4", "scanner": "scanner-primary", "fingerprint": "0194fa07826033f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-401ea20dd83fa0a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/kafka_utils.py:93"}, "properties": {"repobilityId": "f07530f85c1054b0", "scanner": "scanner-primary", "fingerprint": "401ea20dd83fa0a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4023f8e7b71cf189", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/middleware/ratelimit_headers.py:10"}, "properties": {"repobilityId": "98fd49c2903a5053", "scanner": "scanner-primary", "fingerprint": "4023f8e7b71cf189", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-611bc396139c34ac", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/routes.py:3"}, "properties": {"repobilityId": "fb0ae92199bdaa71", "scanner": "scanner-primary", "fingerprint": "611bc396139c34ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9798c25caa32be95", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/routes.py:280"}, "properties": {"repobilityId": "6ecaefe308cb89ff", "scanner": "scanner-primary", "fingerprint": "9798c25caa32be95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df08ee9bf0103b56", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/metrics.py:4"}, "properties": {"repobilityId": "3344eaf5abd0f115", "scanner": "scanner-primary", "fingerprint": "df08ee9bf0103b56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-364871b1519589d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/metrics.py:19"}, "properties": {"repobilityId": "d183788e60ce66ef", "scanner": "scanner-primary", "fingerprint": "364871b1519589d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-933660afacf11350", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/__init__.py:13"}, "properties": {"repobilityId": "d0a10c1f6cf93640", "scanner": "scanner-primary", "fingerprint": "933660afacf11350", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c4ba3c95a921fd7", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/rules_eval.py:4"}, "properties": {"repobilityId": "8b135137f92e3c1c", "scanner": "scanner-primary", "fingerprint": "1c4ba3c95a921fd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-320a9e9e0a5a8721", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/validation.py:4"}, "properties": {"repobilityId": "0b1462058e7443bc", "scanner": "scanner-primary", "fingerprint": "320a9e9e0a5a8721", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-034f7b53eb648d77", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/ratelimit.py:3"}, "properties": {"repobilityId": "ec191c0c130ed6de", "scanner": "scanner-primary", "fingerprint": "034f7b53eb648d77", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-04747e41f68bc278", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/tenant.py:4"}, "properties": {"repobilityId": "9ffe9b4af33d2c50", "scanner": "scanner-primary", "fingerprint": "04747e41f68bc278", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-34a4d171e70220d2", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/graph_sync.py:4"}, "properties": {"repobilityId": "83b5851eb34f7594", "scanner": "scanner-primary", "fingerprint": "34a4d171e70220d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9fa1ddc1d12ee5d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/webhook_router_v2/graph_sync.py:74"}, "properties": {"repobilityId": "b4a42279840ae1c6", "scanner": "scanner-primary", "fingerprint": "9fa1ddc1d12ee5d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73b083396188a94f", "level": "note", "message": {"text": "Legacy-named symbol `webhook_router_v2` in services/ingestion/app/webhook_router_v2/security.py:4"}, "properties": {"repobilityId": "2258bdc116445868", "scanner": "scanner-primary", "fingerprint": "73b083396188a94f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-457221bf340561ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/webhook_router_v2/security.py:82"}, "properties": {"repobilityId": "367a4ec6ca840b65", "scanner": "scanner-primary", "fingerprint": "457221bf340561ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76db785eba0aa831", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/epcis/normalization.py:26"}, "properties": {"repobilityId": "7447c6b94c261043", "scanner": "scanner-primary", "fingerprint": "76db785eba0aa831", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1f0e55adba9ba64", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/epcis/persistence.py:39"}, "properties": {"repobilityId": "54f1c97c704d9c6c", "scanner": "scanner-primary", "fingerprint": "d1f0e55adba9ba64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b5828e3a0bd11c6", "level": "note", "message": {"text": "Legacy-named symbol `stripe_webhook_legacy` in services/ingestion/app/stripe_billing/routes.py:343"}, "properties": {"repobilityId": "1fad28f524b7ceb5", "scanner": "scanner-primary", "fingerprint": "4b5828e3a0bd11c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2724052cc3c1fd78", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/routes.py:109"}, "properties": {"repobilityId": "b86e971f37554153", "scanner": "scanner-primary", "fingerprint": "2724052cc3c1fd78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6adb8a5c4fa25e8", "level": "note", "message": {"text": "Legacy-named symbol `create_portal_session_legacy` in services/ingestion/app/stripe_billing/__init__.py:72"}, "properties": {"repobilityId": "90054e87a3f2bbe9", "scanner": "scanner-primary", "fingerprint": "a6adb8a5c4fa25e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d347a72476fffef", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/__init__.py:179"}, "properties": {"repobilityId": "65d845f2d81309a1", "scanner": "scanner-primary", "fingerprint": "8d347a72476fffef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08355da7359b0041", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/rate_limiting.py:53"}, "properties": {"repobilityId": "ec586b4f38b61717", "scanner": "scanner-primary", "fingerprint": "08355da7359b0041", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a20ba980ee558f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/stripe_billing/webhooks.py:53"}, "properties": {"repobilityId": "8383e9ccbfea9677", "scanner": "scanner-primary", "fingerprint": "8a20ba980ee558f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49c88ce1320e2bb8", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/stripe_billing/helpers.py:28"}, "properties": {"repobilityId": "4c68bd570247d0fa", "scanner": "scanner-primary", "fingerprint": "49c88ce1320e2bb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-386ccc0da8be1437", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/ingestion/app/stripe_billing/state.py:16"}, "properties": {"repobilityId": "4046926abd09e585", "scanner": "scanner-primary", "fingerprint": "386ccc0da8be1437", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9978c592f911b2ce", "level": "note", "message": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/router.py:46"}, "properties": {"repobilityId": "c60012ae4de5e018", "scanner": "scanner-primary", "fingerprint": "9978c592f911b2ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-78fb55bdfd807991", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/ingestion/app/fda_export/router.py:302"}, "properties": {"repobilityId": "f12269dec0418646", "scanner": "scanner-primary", "fingerprint": "78fb55bdfd807991", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-783bbdca503aa110", "level": "note", "message": {"text": "Legacy-named symbol `_generate_csv_v2` in services/ingestion/app/fda_export/formatters.py:20"}, "properties": {"repobilityId": "6078fb354e86513a", "scanner": "scanner-primary", "fingerprint": "783bbdca503aa110", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e72a727c6d978616", "level": "note", "message": {"text": "Legacy-named symbol `api_v2` in services/ingestion/app/fda_export/queries.py:469"}, "properties": {"repobilityId": "a50b6fbed70edc91", "scanner": "scanner-primary", "fingerprint": "e72a727c6d978616", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e72edba90ccb641", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/ingestion/app/fda_export/queries.py:233"}, "properties": {"repobilityId": "be9215aaca9812b0", "scanner": "scanner-primary", "fingerprint": "5e72edba90ccb641", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74c4d8727cbecf4a", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/ingestion/app/edi_ingestion/routes.py:773"}, "properties": {"repobilityId": "12172dc1a99cd213", "scanner": "scanner-primary", "fingerprint": "74c4d8727cbecf4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5c8775acaebf787", "level": "note", "message": {"text": "Legacy-named symbol `naive_old` in services/admin/tests/test_graph_outbox_1342.py:279"}, "properties": {"repobilityId": "64ef78fdcdf882fb", "scanner": "scanner-primary", "fingerprint": "f5c8775acaebf787", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-635765b984f47fde", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_transaction_manager_1342.py:92"}, "properties": {"repobilityId": "bebe846925f5deda", "scanner": "scanner-primary", "fingerprint": "635765b984f47fde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff8eb15dd756a27c", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_webhook_outbox_1408.py:884"}, "properties": {"repobilityId": "0a8f7817abef840f", "scanner": "scanner-primary", "fingerprint": "ff8eb15dd756a27c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-288c2d8c647b53f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_mfa_1342.py:280"}, "properties": {"repobilityId": "592a36dbfe97a6c8", "scanner": "scanner-primary", "fingerprint": "288c2d8c647b53f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2b613eccec3ace5", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/tests/test_get_current_user_tenant_required.py:60"}, "properties": {"repobilityId": "751f7efd6caa8911", "scanner": "scanner-primary", "fingerprint": "f2b613eccec3ace5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24fc9082a0a1e7c6", "level": "note", "message": {"text": "Legacy-named symbol `_hash_v2` in services/admin/tests/test_audit_integrity_1342.py:47"}, "properties": {"repobilityId": "d870c274d44936ed", "scanner": "scanner-primary", "fingerprint": "24fc9082a0a1e7c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ca9431d41988000", "level": "note", "message": {"text": "Legacy-named symbol `rge_legacy` in services/admin/tests/test_review_hardening.py:515"}, "properties": {"repobilityId": "d6a0f8516d81a599", "scanner": "scanner-primary", "fingerprint": "2ca9431d41988000", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dae2da1ebf385b0c", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/tests/test_bulk_upload_graph_sync_wiring.py:399"}, "properties": {"repobilityId": "9eca2b40467ebc32", "scanner": "scanner-primary", "fingerprint": "dae2da1ebf385b0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f98775fbe884740a", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_signup_session_rollback.py:295"}, "properties": {"repobilityId": "889cd4d91df8e6f4", "scanner": "scanner-primary", "fingerprint": "f98775fbe884740a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4871dec41fe5039e", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_get_current_user_tenant_source.py:129"}, "properties": {"repobilityId": "2eeb941791da12bf", "scanner": "scanner-primary", "fingerprint": "4871dec41fe5039e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90d8e96362a266ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_supplier_onboarding_routes.py:120"}, "properties": {"repobilityId": "60e7cd4e9a9b72c4", "scanner": "scanner-primary", "fingerprint": "90d8e96362a266ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3d42a3f15787053", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_compliance_routes_idor.py:193"}, "properties": {"repobilityId": "fd79f245e4ee7495", "scanner": "scanner-primary", "fingerprint": "d3d42a3f15787053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fbf30c5fd34e816", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/tests/test_lead_erasure_1095.py:55"}, "properties": {"repobilityId": "61a95256f906eb9b", "scanner": "scanner-primary", "fingerprint": "4fbf30c5fd34e816", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cff96600c74560a6", "level": "note", "message": {"text": "Legacy-named symbol `recomputed_v2` in services/admin/app/audit_integrity.py:91"}, "properties": {"repobilityId": "df4b11b502d06d9f", "scanner": "scanner-primary", "fingerprint": "cff96600c74560a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f655ffd38f7970f1", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/review_consumer.py:171"}, "properties": {"repobilityId": "136e2d2d894b8d71", "scanner": "scanner-primary", "fingerprint": "f655ffd38f7970f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03002045731ed1d2", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/database.py:94"}, "properties": {"repobilityId": "0424c536524c2369", "scanner": "scanner-primary", "fingerprint": "03002045731ed1d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15edd96679a7b64b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/metrics.py:270"}, "properties": {"repobilityId": "2629fa7e0d614e2e", "scanner": "scanner-primary", "fingerprint": "15edd96679a7b64b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47d0881be8cae775", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/password_reset_routes.py:73"}, "properties": {"repobilityId": "58a25f66cf58a45d", "scanner": "scanner-primary", "fingerprint": "47d0881be8cae775", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e2edd3c5d746516", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/supplier_funnel_routes.py:54"}, "properties": {"repobilityId": "1c5320bcb0734036", "scanner": "scanner-primary", "fingerprint": "3e2edd3c5d746516", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18263356b8104b42", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/data_export_routes.py:315"}, "properties": {"repobilityId": "389549575903766a", "scanner": "scanner-primary", "fingerprint": "18263356b8104b42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66b6a0dc4a7b23de", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/dependencies.py:179"}, "properties": {"repobilityId": "8f5d82893b4f89d5", "scanner": "scanner-primary", "fingerprint": "66b6a0dc4a7b23de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-717ddf75582bc684", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/text_sanitize.py:38"}, "properties": {"repobilityId": "2183942639791709", "scanner": "scanner-primary", "fingerprint": "717ddf75582bc684", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bdf567024d9d374", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/tenant_settings_routes.py:100"}, "properties": {"repobilityId": "c5461e321776a949", "scanner": "scanner-primary", "fingerprint": "1bdf567024d9d374", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bee03cf98770eb08", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/tool_verification_routes.py:363"}, "properties": {"repobilityId": "b5ae4430976a9b2d", "scanner": "scanner-primary", "fingerprint": "bee03cf98770eb08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7deb941f0bbba8fa", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/supplier_graph_sync.py:474"}, "properties": {"repobilityId": "da37495eb4142670", "scanner": "scanner-primary", "fingerprint": "7deb941f0bbba8fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30dd152b3fbb66d", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/review_routes.py:166"}, "properties": {"repobilityId": "5307dd78a5fa50f0", "scanner": "scanner-primary", "fingerprint": "c30dd152b3fbb66d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bda4ff426027a34b", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/mfa.py:638"}, "properties": {"repobilityId": "d8c35c3f6856e971", "scanner": "scanner-primary", "fingerprint": "bda4ff426027a34b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93d2bce9187d6fa9", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/auth_utils.py:56"}, "properties": {"repobilityId": "77d38f036c91e76a", "scanner": "scanner-primary", "fingerprint": "93d2bce9187d6fa9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dce918ccba1133c", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/erasure_routes.py:158"}, "properties": {"repobilityId": "1beefc56ed4bc2ed", "scanner": "scanner-primary", "fingerprint": "5dce918ccba1133c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46832730820d9000", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/admin/app/audit.py:224"}, "properties": {"repobilityId": "a2fde33ebbe7ac83", "scanner": "scanner-primary", "fingerprint": "46832730820d9000", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dbb3ec31133d9c7", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/admin/app/auth/signup_router.py:208"}, "properties": {"repobilityId": "e493983feb0d32d9", "scanner": "scanner-primary", "fingerprint": "9dbb3ec31133d9c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa7027317f593b42", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/admin/app/auth/login_router.py:78"}, "properties": {"repobilityId": "2bf06ce9edd382da", "scanner": "scanner-primary", "fingerprint": "fa7027317f593b42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a94ef0cce762800", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/admin/app/auth/confirm_router.py:179"}, "properties": {"repobilityId": "0b5e8a1a06714f8a", "scanner": "scanner-primary", "fingerprint": "8a94ef0cce762800", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9df8c4e1b70fbd43", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/auth/reset_password_router.py:45"}, "properties": {"repobilityId": "380e6bc0c4bcc711", "scanner": "scanner-primary", "fingerprint": "9df8c4e1b70fbd43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-142a43c5815f7354", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/auth/refresh_router.py:65"}, "properties": {"repobilityId": "ef788a2da8f36b5b", "scanner": "scanner-primary", "fingerprint": "142a43c5815f7354", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-112fdacb3bac06a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/auth/change_password_router.py:75"}, "properties": {"repobilityId": "39702c4679427e46", "scanner": "scanner-primary", "fingerprint": "112fdacb3bac06a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51e9d5af14e81ef2", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/admin/app/bulk_upload/transaction_manager.py:367"}, "properties": {"repobilityId": "7c89367bf6833551", "scanner": "scanner-primary", "fingerprint": "51e9d5af14e81ef2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f46a37f8b46b981", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/bulk_upload/routes.py:234"}, "properties": {"repobilityId": "aaa9a7b4eff2c638", "scanner": "scanner-primary", "fingerprint": "6f46a37f8b46b981", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20a604880e074b5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/admin/app/bulk_upload/session_store.py:25"}, "properties": {"repobilityId": "a4459acdc89848ce", "scanner": "scanner-primary", "fingerprint": "20a604880e074b5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b6f847c2f11fcfe", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/scheduler/service.py:105"}, "properties": {"repobilityId": "316cf13ea81604e0", "scanner": "scanner-primary", "fingerprint": "2b6f847c2f11fcfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34de6d945fcb70cb", "level": "none", "message": {"text": "Commented-code block (8 lines) in services/scheduler/tests/test_safe_http_guardrail.py:20"}, "properties": {"repobilityId": "eea7e440ff537e7a", "scanner": "scanner-primary", "fingerprint": "34de6d945fcb70cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c360b03f53df7312", "level": "note", "message": {"text": "Legacy-named symbol `test_get_dead_letters_returns_copy` in services/scheduler/tests/test_notifications.py:176"}, "properties": {"repobilityId": "7a43962e387529b5", "scanner": "scanner-primary", "fingerprint": "c360b03f53df7312", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9394a3c275b010bb", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/scheduler/app/notifications.py:28"}, "properties": {"repobilityId": "3ca058ebb3b9f0f3", "scanner": "scanner-primary", "fingerprint": "9394a3c275b010bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e140ad53a908167", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/scheduler/app/distributed.py:24"}, "properties": {"repobilityId": "e07a85ba2bfd502d", "scanner": "scanner-primary", "fingerprint": "2e140ad53a908167", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-709a99efb9249652", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/scheduler/app/config.py:99"}, "properties": {"repobilityId": "3c61403306bf48fb", "scanner": "scanner-primary", "fingerprint": "709a99efb9249652", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e867bbca3a56f352", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/scheduler/app/compliance_integration.py:85"}, "properties": {"repobilityId": "9bf8fd44041e5e48", "scanner": "scanner-primary", "fingerprint": "e867bbca3a56f352", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93e183704fd12283", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/scheduler/app/models.py:62"}, "properties": {"repobilityId": "0f4c5e3e2dd73500", "scanner": "scanner-primary", "fingerprint": "93e183704fd12283", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3384830d86440f39", "level": "none", "message": {"text": "Commented-code block (10 lines) in services/scheduler/app/scrapers/fda_import_alerts.py:31"}, "properties": {"repobilityId": "280f70eab33e927b", "scanner": "scanner-primary", "fingerprint": "3384830d86440f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fdafc5cedd569c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/scheduler/app/scrapers/base.py:19"}, "properties": {"repobilityId": "d1aa051aab548b9d", "scanner": "scanner-primary", "fingerprint": "1fdafc5cedd569c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1496630125302d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/graph/tests/test_neo4j_integration_testcontainers.py:6"}, "properties": {"repobilityId": "3365051c7e5b9daa", "scanner": "scanner-primary", "fingerprint": "c1496630125302d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fb2ac07c30bc064", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/graph/app/overlay_resolver.py:89"}, "properties": {"repobilityId": "5485a43969ea2b83", "scanner": "scanner-primary", "fingerprint": "7fb2ac07c30bc064", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f22c078c3a29ddc", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/graph/app/config.py:28"}, "properties": {"repobilityId": "ecc330dc125b40a2", "scanner": "scanner-primary", "fingerprint": "4f22c078c3a29ddc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51f523582b70f5ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/graph/app/hierarchy_builder.py:62"}, "properties": {"repobilityId": "cdc7fd7f3dd6873d", "scanner": "scanner-primary", "fingerprint": "51f523582b70f5ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b065cbeb05619f05", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/graph/app/models/fsma_nodes.py:511"}, "properties": {"repobilityId": "a682318c797b4904", "scanner": "scanner-primary", "fingerprint": "b065cbeb05619f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83cf9453cc683354", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/graph/app/routers/lineage_traversal.py:63"}, "properties": {"repobilityId": "1f7d88611b542e4d", "scanner": "scanner-primary", "fingerprint": "83cf9453cc683354", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b847f54cdd9d19ca", "level": "none", "message": {"text": "Commented-code block (9 lines) in services/graph/app/routers/fsma/compliance.py:987"}, "properties": {"repobilityId": "963d4b0da8dbf499", "scanner": "scanner-primary", "fingerprint": "b847f54cdd9d19ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a41284474c4f6e45", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/graph/app/fsma/tracer.py:58"}, "properties": {"repobilityId": "1009476ea9495e59", "scanner": "scanner-primary", "fingerprint": "a41284474c4f6e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62c15d250cf01494", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/graph/app/fsma/data_quality.py:69"}, "properties": {"repobilityId": "7c22ba5154d42db6", "scanner": "scanner-primary", "fingerprint": "62c15d250cf01494", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e930f6c4f4d4d2c1", "level": "none", "message": {"text": "Commented-code block (7 lines) in services/graph/app/fsma/queries.py:150"}, "properties": {"repobilityId": "079a0534049f2b0f", "scanner": "scanner-primary", "fingerprint": "e930f6c4f4d4d2c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95ebd463a945f45e", "level": "none", "message": {"text": "Commented-code block (5 lines) in alembic/versions/20260324_97588ba8edf3_baseline_consolidate_v002_through_v042.py:35"}, "properties": {"repobilityId": "d7e54d0ac7fc2e55", "scanner": "scanner-primary", "fingerprint": "95ebd463a945f45e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cca6e080ca6027d", "level": "none", "message": {"text": "Commented-code block (9 lines) in alembic/versions/20260415_v056_rls_hardening.py:136"}, "properties": {"repobilityId": "7fb8420242560df6", "scanner": "scanner-primary", "fingerprint": "8cca6e080ca6027d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2316fc27b3b81e8", "level": "none", "message": {"text": "Commented-code block (7 lines) in alembic/versions/20260423_c7d8e9f0a1b2_v065_audit_logs_fix_uuid_columns.py:255"}, "properties": {"repobilityId": "f1d035de125adf85", "scanner": "scanner-primary", "fingerprint": "b2316fc27b3b81e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0c8b476070fd126", "level": "none", "message": {"text": "Commented-code block (13 lines) in alembic/versions/20260424_e9f0a1b2c3d4_v067_tenant_id_uuid_standardization.py:84"}, "properties": {"repobilityId": "5e46e3603a49b540", "scanner": "scanner-primary", "fingerprint": "d0c8b476070fd126", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f26f200e0b01d840", "level": "none", "message": {"text": "Commented-code block (5 lines) in alembic/versions/20260424_abc565b7dc47_v069_v31_fsma_tenant_id_rls.py:97"}, "properties": {"repobilityId": "b5c3be4fe7469ea3", "scanner": "scanner-primary", "fingerprint": "f26f200e0b01d840", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16ab3e7feb36eadd", "level": "note", "message": {"text": "241 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "fc25afd2a8909d56", "scanner": "scanner-primary", "fingerprint": "16ab3e7feb36eadd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "a253d7c131a7ce7b", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "c06d3638f0411918", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "0572775040c08346", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-0027e313ade46c8f", "level": "note", "message": {"text": "Near-duplicate function bodies in 7 places"}, "properties": {"repobilityId": "1803f6d74f4806bc", "scanner": "scanner-primary", "fingerprint": "0027e313ade46c8f", "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": "ee7fccc88083d54c", "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": "3950f4d189c2e6dd", "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": "2b60e78cb4c4fcd7", "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": "d57280075bfd355f", "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": "fcf13991e18f5f93", "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": "ea6337838c2630b1", "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": "71d514e041b3c52e", "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": "ecf4fcbc58b985c2", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "15b2561ca1d4bd98", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "44d0a6761662711a", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "311b42d4dc42ed1d", "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": "022db8b63b966a08", "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": "7530a6cb708a72c0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "b07d3706ba9d6704", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "7fba34db16fff48c", "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": "6f9dfdad947a9485", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-392f679b9c653c9b", "level": "error", "message": {"text": "FastAPI POST `import_sensitech` without auth dependency \u2014 services/ingestion/app/sensitech_parser.py:214"}, "properties": {"repobilityId": "3170cfe0d8a8b10e", "scanner": "scanner-primary", "fingerprint": "392f679b9c653c9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/sensitech_parser.py"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-769acc52d2c38478", "level": "error", "message": {"text": "FastAPI POST `verify_export` without auth dependency \u2014 services/ingestion/app/proof_verify_router.py:517"}, "properties": {"repobilityId": "7798b3b2275e6188", "scanner": "scanner-primary", "fingerprint": "769acc52d2c38478", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/proof_verify_router.py"}, "region": {"startLine": 517}}}]}, {"ruleId": "scanner-84b3dacb5f4c5269", "level": "error", "message": {"text": "FastAPI POST `evaluate_event` without auth dependency \u2014 services/ingestion/app/rules_router.py:180"}, "properties": {"repobilityId": "99fdf467fa5c423e", "scanner": "scanner-primary", "fingerprint": "84b3dacb5f4c5269", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/rules_router.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-afa1627f3fc5ca0d", "level": "error", "message": {"text": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_webhook.py:104"}, "properties": {"repobilityId": "de6e049b2b6e5814", "scanner": "scanner-primary", "fingerprint": "afa1627f3fc5ca0d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/integration_webhook.py"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-cca9ebb7c67b84c6", "level": "error", "message": {"text": "FastAPI POST `receive_webhook` without auth dependency \u2014 services/ingestion/app/integration_router.py:689"}, "properties": {"repobilityId": "1b0b03fb6839f42e", "scanner": "scanner-primary", "fingerprint": "cca9ebb7c67b84c6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/integration_router.py"}, "region": {"startLine": 689}}}]}, {"ruleId": "scanner-1dd2fb90c69c132e", "level": "error", "message": {"text": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:304"}, "properties": {"repobilityId": "a272ceb196dca0c7", "scanner": "scanner-primary", "fingerprint": "1dd2fb90c69c132e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 304}}}]}, {"ruleId": "scanner-f7e911bb5e4449b7", "level": "error", "message": {"text": "FastAPI POST `ingest_regulation` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:310"}, "properties": {"repobilityId": "ffa3fdec82bd0032", "scanner": "scanner-primary", "fingerprint": "f7e911bb5e4449b7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-a83f8aa78ed719fa", "level": "error", "message": {"text": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:581"}, "properties": {"repobilityId": "dbd97ad9e2f38fba", "scanner": "scanner-primary", "fingerprint": "a83f8aa78ed719fa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 581}}}]}, {"ruleId": "scanner-55f3d8e77de56c11", "level": "error", "message": {"text": "FastAPI POST `ingest_direct` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:582"}, "properties": {"repobilityId": "0f5393293ec3015f", "scanner": "scanner-primary", "fingerprint": "55f3d8e77de56c11", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 582}}}]}, {"ruleId": "scanner-e91e8a87ae2bdbec", "level": "error", "message": {"text": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:656"}, "properties": {"repobilityId": "13964a7f1b87699b", "scanner": "scanner-primary", "fingerprint": "e91e8a87ae2bdbec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 656}}}]}, {"ruleId": "scanner-e7d137f6f6e8ade8", "level": "error", "message": {"text": "FastAPI POST `ingest_file` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:657"}, "properties": {"repobilityId": "15f0f3d0fafcdc8b", "scanner": "scanner-primary", "fingerprint": "e7d137f6f6e8ade8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 657}}}]}, {"ruleId": "scanner-bde340eb47d6f495", "level": "error", "message": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:738"}, "properties": {"repobilityId": "5c47f187a471656b", "scanner": "scanner-primary", "fingerprint": "bde340eb47d6f495", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 738}}}]}, {"ruleId": "scanner-47e41444f2dbad25", "level": "error", "message": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:739"}, "properties": {"repobilityId": "808e69801ca4fbd5", "scanner": "scanner-primary", "fingerprint": "47e41444f2dbad25", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 739}}}]}, {"ruleId": "scanner-4c3f1ae97f736ffd", "level": "error", "message": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:740"}, "properties": {"repobilityId": "fc31dab32d9b3d3e", "scanner": "scanner-primary", "fingerprint": "4c3f1ae97f736ffd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 740}}}]}, {"ruleId": "scanner-a7d1f2d09723dc6b", "level": "error", "message": {"text": "FastAPI POST `ingest_url` without auth dependency \u2014 services/ingestion/app/routes_ingest.py:741"}, "properties": {"repobilityId": "45ed71e020046f7a", "scanner": "scanner-primary", "fingerprint": "a7d1f2d09723dc6b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/routes_ingest.py"}, "region": {"startLine": 741}}}]}, {"ruleId": "scanner-41df258bc765b008", "level": "error", "message": {"text": "FastAPI POST `run_recall_drill` without auth dependency \u2014 services/ingestion/app/proof_recall_router.py:181"}, "properties": {"repobilityId": "9c65607b0d46d2f5", "scanner": "scanner-primary", "fingerprint": "41df258bc765b008", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/proof_recall_router.py"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-9e53c655fb1e1785", "level": "error", "message": {"text": "FastAPI POST `preflight_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:751"}, "properties": {"repobilityId": "d9da7e53f5cff7da", "scanner": "scanner-primary", "fingerprint": "9e53c655fb1e1785", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/supplier_portal.py"}, "region": {"startLine": 751}}}]}, {"ruleId": "scanner-7d7495c0f4affd6d", "level": "error", "message": {"text": "FastAPI POST `submit_supplier_data` without auth dependency \u2014 services/ingestion/app/supplier_portal.py:766"}, "properties": {"repobilityId": "a4ece46086f0042e", "scanner": "scanner-primary", "fingerprint": "7d7495c0f4affd6d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/supplier_portal.py"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-ee073e4058fdec94", "level": "error", "message": {"text": "FastAPI POST `ingest_events` without auth dependency \u2014 services/ingestion/app/webhook_router_v2/routes.py:59"}, "properties": {"repobilityId": "5cb640bc1bf91ae7", "scanner": "scanner-primary", "fingerprint": "ee073e4058fdec94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/webhook_router_v2/routes.py"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-efca73e52e855dd2", "level": "error", "message": {"text": "FastAPI POST `ingest_epcis_batch` without auth dependency \u2014 services/ingestion/app/epcis/router.py:102"}, "properties": {"repobilityId": "558b833ad7ba5a88", "scanner": "scanner-primary", "fingerprint": "efca73e52e855dd2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/epcis/router.py"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-722ab7ba4dcda153", "level": "error", "message": {"text": "FastAPI POST `ingest_epcis_xml` without auth dependency \u2014 services/ingestion/app/epcis/router.py:298"}, "properties": {"repobilityId": "2906ede08d5b1c7f", "scanner": "scanner-primary", "fingerprint": "722ab7ba4dcda153", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/epcis/router.py"}, "region": {"startLine": 298}}}]}, {"ruleId": "scanner-d080b7e5bb744329", "level": "error", "message": {"text": "FastAPI POST `sandbox_evaluate` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:63"}, "properties": {"repobilityId": "b092e0836224fcba", "scanner": "scanner-primary", "fingerprint": "d080b7e5bb744329", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/sandbox/router.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-160bd893015b6f3b", "level": "error", "message": {"text": "FastAPI POST `sandbox_trace` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:255"}, "properties": {"repobilityId": "b15ee5959a9dfc02", "scanner": "scanner-primary", "fingerprint": "160bd893015b6f3b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/sandbox/router.py"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-68634beb24cd1eae", "level": "error", "message": {"text": "FastAPI POST `sandbox_share` without auth dependency \u2014 services/ingestion/app/sandbox/router.py:280"}, "properties": {"repobilityId": "45696b64267f2d76", "scanner": "scanner-primary", "fingerprint": "68634beb24cd1eae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/sandbox/router.py"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-1dcf3e3695c6d2e0", "level": "error", "message": {"text": "FastAPI POST `create_checkout` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:79"}, "properties": {"repobilityId": "f1fdeeba60e93e6c", "scanner": "scanner-primary", "fingerprint": "1dcf3e3695c6d2e0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/stripe_billing/routes.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-2d2742f0a6237c43", "level": "error", "message": {"text": "FastAPI POST `stripe_webhooks` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:323"}, "properties": {"repobilityId": "53f6552dd534157a", "scanner": "scanner-primary", "fingerprint": "2d2742f0a6237c43", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/stripe_billing/routes.py"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-eaf726279c482d8d", "level": "error", "message": {"text": "FastAPI POST `stripe_webhook_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:337"}, "properties": {"repobilityId": "557c4e0c9b4f4ce6", "scanner": "scanner-primary", "fingerprint": "eaf726279c482d8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/stripe_billing/routes.py"}, "region": {"startLine": 337}}}]}, {"ruleId": "scanner-584531c83f134377", "level": "error", "message": {"text": "FastAPI POST `create_portal_session_for_tenant` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:352"}, "properties": {"repobilityId": "12daeed16e418e87", "scanner": "scanner-primary", "fingerprint": "584531c83f134377", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/stripe_billing/routes.py"}, "region": {"startLine": 352}}}]}, {"ruleId": "scanner-cf6ecc863c1a644e", "level": "error", "message": {"text": "FastAPI POST `create_portal_session_legacy` without auth dependency \u2014 services/ingestion/app/stripe_billing/routes.py:545"}, "properties": {"repobilityId": "3a92ea791590792d", "scanner": "scanner-primary", "fingerprint": "cf6ecc863c1a644e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/stripe_billing/routes.py"}, "region": {"startLine": 545}}}]}, {"ruleId": "scanner-643823d6c45fe087", "level": "error", "message": {"text": "FastAPI POST `ingest_edi_856` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:367"}, "properties": {"repobilityId": "2d94913a086032c7", "scanner": "scanner-primary", "fingerprint": "643823d6c45fe087", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/edi_ingestion/routes.py"}, "region": {"startLine": 367}}}]}, {"ruleId": "scanner-cbb82205981eaad2", "level": "error", "message": {"text": "FastAPI POST `ingest_edi_document` without auth dependency \u2014 services/ingestion/app/edi_ingestion/routes.py:670"}, "properties": {"repobilityId": "f2151f861253f4ee", "scanner": "scanner-primary", "fingerprint": "cbb82205981eaad2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/ingestion/app/edi_ingestion/routes.py"}, "region": {"startLine": 670}}}]}, {"ruleId": "scanner-bf8a20c7d00ba3a7", "level": "error", "message": {"text": "FastAPI POST `verify_email` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:272"}, "properties": {"repobilityId": "b8452bb6ed8690f8", "scanner": "scanner-primary", "fingerprint": "bf8a20c7d00ba3a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/admin/app/tool_verification_routes.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-f9d9e99d340a66fb", "level": "error", "message": {"text": "FastAPI POST `confirm_code` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:320"}, "properties": {"repobilityId": "dd08bedad76ffdcb", "scanner": "scanner-primary", "fingerprint": "f9d9e99d340a66fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/admin/app/tool_verification_routes.py"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-5cf4aafc60aced8d", "level": "error", "message": {"text": "FastAPI POST `request_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:378"}, "properties": {"repobilityId": "f62abca474470ee6", "scanner": "scanner-primary", "fingerprint": "5cf4aafc60aced8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/admin/app/tool_verification_routes.py"}, "region": {"startLine": 378}}}]}, {"ruleId": "scanner-d3653e3e320037d0", "level": "error", "message": {"text": "FastAPI POST `confirm_lead_erasure` without auth dependency \u2014 services/admin/app/tool_verification_routes.py:398"}, "properties": {"repobilityId": "bd069c6ed279ddfd", "scanner": "scanner-primary", "fingerprint": "d3653e3e320037d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/admin/app/tool_verification_routes.py"}, "region": {"startLine": 398}}}]}, {"ruleId": "scanner-e25fe726ebd4f176", "level": "error", "message": {"text": "Dangling fetch: GET /api/search?q=${encodeURIComponent(payload)} (frontend/src/test/security/api-security.test.ts:36)"}, "properties": {"repobilityId": "612a9fa571fdd856", "scanner": "scanner-primary", "fingerprint": "e25fe726ebd4f176", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6f1ab596c198a4a9", "level": "error", "message": {"text": "Dangling fetch: GET /api/test (frontend/src/test/security/api-security.test.ts:109)"}, "properties": {"repobilityId": "df17fd08906a3733", "scanner": "scanner-primary", "fingerprint": "6f1ab596c198a4a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5c13f97713690b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/protected (frontend/src/test/security/api-security.test.ts:123)"}, "properties": {"repobilityId": "018011ffaa6383ec", "scanner": "scanner-primary", "fingerprint": "f5c13f97713690b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bd319387b7cabb6f", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin (frontend/src/test/security/api-security.test.ts:135)"}, "properties": {"repobilityId": "8a3f35c3007968c1", "scanner": "scanner-primary", "fingerprint": "bd319387b7cabb6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d83830b8f825fb20", "level": "error", "message": {"text": "Dangling fetch: GET /api/fsma/lots (frontend/src/test/security/rbac.test.ts:29)"}, "properties": {"repobilityId": "4b5f5c376f4756dc", "scanner": "scanner-primary", "fingerprint": "d83830b8f825fb20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b02b17e3427c32bb", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/users/delete/user-123 (frontend/src/test/security/rbac.test.ts:77)"}, "properties": {"repobilityId": "dc1070e8f438e86e", "scanner": "scanner-primary", "fingerprint": "b02b17e3427c32bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fd0aaaff1af34083", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/settings (frontend/src/test/security/rbac.test.ts:97)"}, "properties": {"repobilityId": "e889e16d1d26a717", "scanner": "scanner-primary", "fingerprint": "fd0aaaff1af34083", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be1d4f2277c86f10", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/current-user/role (frontend/src/test/security/rbac.test.ts:112)"}, "properties": {"repobilityId": "16b4f671823b003c", "scanner": "scanner-primary", "fingerprint": "be1d4f2277c86f10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc00c1ffa0544aaf", "level": "error", "message": {"text": "Dangling fetch: GET /api/protected (frontend/src/test/security/rbac.test.ts:173)"}, "properties": {"repobilityId": "8d5b2b80f087789a", "scanner": "scanner-primary", "fingerprint": "dc00c1ffa0544aaf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5578df05c538fae", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:187)"}, "properties": {"repobilityId": "a6f4886a4b88b995", "scanner": "scanner-primary", "fingerprint": "c5578df05c538fae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1398f98292eeb46f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/delete-tenant (frontend/src/test/security/rbac.test.ts:193)"}, "properties": {"repobilityId": "8fcc562f0ac71b4a", "scanner": "scanner-primary", "fingerprint": "1398f98292eeb46f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1212427ef5434712", "level": "error", "message": {"text": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:217)"}, "properties": {"repobilityId": "c6a1952f4cd5e754", "scanner": "scanner-primary", "fingerprint": "1212427ef5434712", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed8279829fab40c2", "level": "error", "message": {"text": "Dangling fetch: PUT /api/users/123/role (frontend/src/test/security/rbac.test.ts:221)"}, "properties": {"repobilityId": "72eb020674576ead", "scanner": "scanner-primary", "fingerprint": "ed8279829fab40c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1105ce9dc8839b8", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:88)"}, "properties": {"repobilityId": "5654e5520dbab1fa", "scanner": "scanner-primary", "fingerprint": "e1105ce9dc8839b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-63dcb6d720fc6ec3", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/audit/log-123 (frontend/src/test/security/audit-trail.test.ts:103)"}, "properties": {"repobilityId": "26cd58a26f0936a5", "scanner": "scanner-primary", "fingerprint": "63dcb6d720fc6ec3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-196ee188d3c516d3", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:212)"}, "properties": {"repobilityId": "a4b936eb82e86ec3", "scanner": "scanner-primary", "fingerprint": "196ee188d3c516d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-09d78b329d693fcc", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:240)"}, "properties": {"repobilityId": "ef0f409962b270ae", "scanner": "scanner-primary", "fingerprint": "09d78b329d693fcc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9730de0142a56f8", "level": "error", "message": {"text": "Dangling fetch: POST /api/audit/log (frontend/src/test/security/audit-trail.test.ts:262)"}, "properties": {"repobilityId": "9c3633b79204e6a0", "scanner": "scanner-primary", "fingerprint": "b9730de0142a56f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f059eeddd29e8d2e", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/audit/purge (frontend/src/test/security/audit-trail.test.ts:295)"}, "properties": {"repobilityId": "c46058e0162aa2ff", "scanner": "scanner-primary", "fingerprint": "f059eeddd29e8d2e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-43d802bb79ef56c6", "level": "error", "message": {"text": "Dangling fetch: POST /api/gdpr/erasure (frontend/src/test/compliance/data-protection.test.ts:45)"}, "properties": {"repobilityId": "df9d433b9dba8675", "scanner": "scanner-primary", "fingerprint": "43d802bb79ef56c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3821a8869b83b752", "level": "error", "message": {"text": "Dangling fetch: GET /api/gdpr/erasure/${initData.request_id} (frontend/src/test/compliance/data-protection.test.ts:55)"}, "properties": {"repobilityId": "96823fa348184228", "scanner": "scanner-primary", "fingerprint": "3821a8869b83b752", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb7df7d1f54f672a", "level": "error", "message": {"text": "Dangling fetch: GET /api/gdpr/verify/${store} (frontend/src/test/compliance/data-protection.test.ts:78)"}, "properties": {"repobilityId": "b3ff87961d380353", "scanner": "scanner-primary", "fingerprint": "eb7df7d1f54f672a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9320a8b4e6c2505f", "level": "error", "message": {"text": "Dangling fetch: GET /api/gdpr/audit-check/user-deleted (frontend/src/test/compliance/data-protection.test.ts:100)"}, "properties": {"repobilityId": "6d1fb277597d6e54", "scanner": "scanner-primary", "fingerprint": "9320a8b4e6c2505f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-252fb06f6736a147", "level": "error", "message": {"text": "Dangling fetch: GET /api/compliance/data-residency/eu-user-001 (frontend/src/test/compliance/data-protection.test.ts:118)"}, "properties": {"repobilityId": "531f06ed0d3f08f0", "scanner": "scanner-primary", "fingerprint": "252fb06f6736a147", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52a94f400eb6f64e", "level": "error", "message": {"text": "Dangling fetch: POST /api/data/transfer (frontend/src/test/compliance/data-protection.test.ts:131)"}, "properties": {"repobilityId": "c9c8dd661da758ce", "scanner": "scanner-primary", "fingerprint": "52a94f400eb6f64e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e63ea8fb85e36ed5", "level": "error", "message": {"text": "Dangling fetch: POST /api/patients (frontend/src/test/compliance/data-protection.test.ts:181)"}, "properties": {"repobilityId": "e9be2f542b1dca47", "scanner": "scanner-primary", "fingerprint": "e63ea8fb85e36ed5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-12b5a191bad53f71", "level": "error", "message": {"text": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:212)"}, "properties": {"repobilityId": "8f22fa8b83fd9639", "scanner": "scanner-primary", "fingerprint": "12b5a191bad53f71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00f95dfe8ddca039", "level": "error", "message": {"text": "Dangling fetch: GET /api/patients/patient-123 (frontend/src/test/compliance/data-protection.test.ts:227)"}, "properties": {"repobilityId": "52be59297b831c51", "scanner": "scanner-primary", "fingerprint": "00f95dfe8ddca039", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7620cf49e0c26405", "level": "error", "message": {"text": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:256)"}, "properties": {"repobilityId": "5e4bff26fb392796", "scanner": "scanner-primary", "fingerprint": "7620cf49e0c26405", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-15f8b4b4f5011a04", "level": "error", "message": {"text": "Dangling fetch: GET /api/patients/123 (frontend/src/test/compliance/data-protection.test.ts:263)"}, "properties": {"repobilityId": "0c61c19cfc23e359", "scanner": "scanner-primary", "fingerprint": "15f8b4b4f5011a04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c27f9f0e1090be6d", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/pay-001 (frontend/src/test/compliance/data-protection.test.ts:301)"}, "properties": {"repobilityId": "dac04ecf05c98445", "scanner": "scanner-primary", "fingerprint": "c27f9f0e1090be6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-05044f21f673e920", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments (frontend/src/test/compliance/data-protection.test.ts:314)"}, "properties": {"repobilityId": "3b70a784529d5234", "scanner": "scanner-primary", "fingerprint": "05044f21f673e920", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-62bcd47e214aea1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/tokenize (frontend/src/test/compliance/data-protection.test.ts:336)"}, "properties": {"repobilityId": "8e1683d23453fe78", "scanner": "scanner-primary", "fingerprint": "62bcd47e214aea1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55245b20df304c06", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/charge (frontend/src/test/compliance/data-protection.test.ts:355)"}, "properties": {"repobilityId": "d0a68af047de746e", "scanner": "scanner-primary", "fingerprint": "55245b20df304c06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc2862e640ea31ea", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/compliance/status/${tenantId} (frontend/src/components/dashboard/compliance-status-widget.tsx:166)"}, "properties": {"repobilityId": "ddade77009d3f5d1", "scanner": "scanner-primary", "fingerprint": "bc2862e640ea31ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f813429505a0bd80", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/supabase/verify-otp (frontend/src/app/auth/verify/VerifyClient.tsx:46)"}, "properties": {"repobilityId": "5547560454a28c17", "scanner": "scanner-primary", "fingerprint": "f813429505a0bd80", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2e296fa858ac1cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/login/LoginClient.tsx:189)"}, "properties": {"repobilityId": "d1295148ae904609", "scanner": "scanner-primary", "fingerprint": "d2e296fa858ac1cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4f3bee3be03074e7", "level": "error", "message": {"text": "Dangling fetch: POST http://localhost:3000/api/setup-demo (frontend/src/app/api/__tests__/routes.test.ts:82)"}, "properties": {"repobilityId": "933069a1ad0eb9fd", "scanner": "scanner-primary", "fingerprint": "4f3bee3be03074e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ab12634673b1f87", "level": "error", "message": {"text": "Dangling fetch: GET http://localhost:3000/api/review/items (frontend/src/app/api/__tests__/routes.test.ts:92)"}, "properties": {"repobilityId": "7f9a278d0f5162b3", "scanner": "scanner-primary", "fingerprint": "3ab12634673b1f87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-191b5454a054c8d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/fsma/customer-readiness/mappings (frontend/src/app/dashboard/integrations/page.tsx:169)"}, "properties": {"repobilityId": "67603b16b3688135", "scanner": "scanner-primary", "fingerprint": "191b5454a054c8d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ef46fc022635a4f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/supabase/sign-in (frontend/src/app/signup/page.tsx:54)"}, "properties": {"repobilityId": "e082ead0a888aa7e", "scanner": "scanner-primary", "fingerprint": "ef46fc022635a4f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-23f3dc5f55eeda7e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/assessments/retailer-readiness (frontend/src/app/retailer-readiness/page.tsx:142)"}, "properties": {"repobilityId": "b134d9b7a9f2649c", "scanner": "scanner-primary", "fingerprint": "23f3dc5f55eeda7e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19ac05b0660c6225", "level": "error", "message": {"text": "Dangling fetch: GET /api/developer/portal/dashboard (frontend/src/app/developer/portal/page.tsx:35)"}, "properties": {"repobilityId": "cd83d439c9882a93", "scanner": "scanner-primary", "fingerprint": "19ac05b0660c6225", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f3d650f00cec53d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/developer/portal/usage?range=${timeRange} (frontend/src/app/developer/portal/usage/page.tsx:38)"}, "properties": {"repobilityId": "8f79ac9d0e7ec5e6", "scanner": "scanner-primary", "fingerprint": "f3d650f00cec53d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-42669761b8349515", "level": "error", "message": {"text": "Dangling fetch: GET /api/developer/portal/keys (frontend/src/app/developer/portal/keys/page.tsx:37)"}, "properties": {"repobilityId": "937966b2a7f46e0e", "scanner": "scanner-primary", "fingerprint": "42669761b8349515", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-41ec8ab3798f25c9", "level": "error", "message": {"text": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:102)"}, "properties": {"repobilityId": "0997b6ca8aff4252", "scanner": "scanner-primary", "fingerprint": "41ec8ab3798f25c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c91844fd36962cd", "level": "error", "message": {"text": "Dangling fetch: GET /api/session (frontend/src/lib/auth-context.tsx:151)"}, "properties": {"repobilityId": "30f46e5a2169c354", "scanner": "scanner-primary", "fingerprint": "4c91844fd36962cd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-64bd522b2c839b7b", "level": "error", "message": {"text": "Dangling fetch: GET /api/fsma/organizations (frontend/src/hooks/use-organizations.ts:40)"}, "properties": {"repobilityId": "f546048893576268", "scanner": "scanner-primary", "fingerprint": "64bd522b2c839b7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-44dcdd453cc6ca99", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/features"}, "properties": {"repobilityId": "08799a68e21c71a2", "scanner": "scanner-primary", "fingerprint": "44dcdd453cc6ca99", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e4ae667a3a93993", "level": "note", "message": {"text": "Unused endpoint: GET /billing/plans"}, "properties": {"repobilityId": "d881e1ec4d858953", "scanner": "scanner-primary", "fingerprint": "0e4ae667a3a93993", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "3097d3f2e9a6c279", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b2fb03327ec7e635", "level": "note", "message": {"text": "Unused endpoint: GET /readiness"}, "properties": {"repobilityId": "da081890c6b15386", "scanner": "scanner-primary", "fingerprint": "b2fb03327ec7e635", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92c1d3322a1168bd", "level": "note", "message": {"text": "Unused endpoint: POST /query/traceability"}, "properties": {"repobilityId": "de6693f9d290c88d", "scanner": "scanner-primary", "fingerprint": "92c1d3322a1168bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c236625afb6a8cb", "level": "note", "message": {"text": "Unused endpoint: GET /ready"}, "properties": {"repobilityId": "3df4efff3b4fb14b", "scanner": "scanner-primary", "fingerprint": "8c236625afb6a8cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee732b4833130237", "level": "note", "message": {"text": "Unused endpoint: GET /industries"}, "properties": {"repobilityId": "397139fb1842fa40", "scanner": "scanner-primary", "fingerprint": "ee732b4833130237", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-92ea10166174e0d3", "level": "note", "message": {"text": "Unused endpoint: GET /checklists"}, "properties": {"repobilityId": "13c00a523133b066", "scanner": "scanner-primary", "fingerprint": "92ea10166174e0d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f47ed8be8eb889fe", "level": "note", "message": {"text": "Unused endpoint: GET /checklists/{checklist_id}"}, "properties": {"repobilityId": "324bd6ce99f8d650", "scanner": "scanner-primary", "fingerprint": "f47ed8be8eb889fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-34c0472a1f1fafe5", "level": "note", "message": {"text": "Unused endpoint: POST /validate"}, "properties": {"repobilityId": "bbd8de4073e220f1", "scanner": "scanner-primary", "fingerprint": "34c0472a1f1fafe5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afc08998b1fc95d5", "level": "note", "message": {"text": "Unused endpoint: GET /v1/fsma/audit/spreadsheet"}, "properties": {"repobilityId": "da45a8def6fae1e8", "scanner": "scanner-primary", "fingerprint": "afc08998b1fc95d5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e8ae1347ef7494c", "level": "note", "message": {"text": "Unused endpoint: POST /drill/start"}, "properties": {"repobilityId": "9ede4135bb89bd71", "scanner": "scanner-primary", "fingerprint": "9e8ae1347ef7494c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b702eb895455a76", "level": "note", "message": {"text": "Unused endpoint: GET /drill/{drill_id}"}, "properties": {"repobilityId": "f779e3f945234250", "scanner": "scanner-primary", "fingerprint": "3b702eb895455a76", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c455b707944633ea", "level": "note", "message": {"text": "Unused endpoint: POST /drill/{drill_id}/submit"}, "properties": {"repobilityId": "ce71f14e0bfa1ccf", "scanner": "scanner-primary", "fingerprint": "c455b707944633ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0684415ce5c2f026", "level": "note", "message": {"text": "Unused endpoint: GET /{tenant_id}/readiness"}, "properties": {"repobilityId": "83577c108d4c8397", "scanner": "scanner-primary", "fingerprint": "0684415ce5c2f026", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50eb8304a3a981f8", "level": "note", "message": {"text": "Unused endpoint: GET /{tenant_id}/backup-status"}, "properties": {"repobilityId": "5c12fdc2c43f330d", "scanner": "scanner-primary", "fingerprint": "50eb8304a3a981f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9d78a782de88643b", "level": "note", "message": {"text": "Unused endpoint: POST /{tenant_id}/test-recovery"}, "properties": {"repobilityId": "f23f04a235c7be78", "scanner": "scanner-primary", "fingerprint": "9d78a782de88643b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59d80f16bc3aa4dc", "level": "note", "message": {"text": "Unused endpoint: POST /sensitech"}, "properties": {"repobilityId": "a86cbf3d1edbdbdd", "scanner": "scanner-primary", "fingerprint": "59d80f16bc3aa4dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aee9168e964a3822", "level": "note", "message": {"text": "Unused endpoint: POST /verify"}, "properties": {"repobilityId": "9487ea77ee986f4b", "scanner": "scanner-primary", "fingerprint": "aee9168e964a3822", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89fac5fa9fc7d4b9", "level": "note", "message": {"text": "Unused endpoint: POST /analyze-label"}, "properties": {"repobilityId": "9d473479063f08d1", "scanner": "scanner-primary", "fingerprint": "89fac5fa9fc7d4b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c948ea72b525d34", "level": "note", "message": {"text": "Unused endpoint: GET /{rule_id}"}, "properties": {"repobilityId": "7225f867cafa373e", "scanner": "scanner-primary", "fingerprint": "0c948ea72b525d34", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-95f235fd6ce6304d", "level": "note", "message": {"text": "Unused endpoint: POST /evaluate"}, "properties": {"repobilityId": "1fa28c2c57c162aa", "scanner": "scanner-primary", "fingerprint": "95f235fd6ce6304d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7ee05533f0ac3fc", "level": "note", "message": {"text": "Unused endpoint: POST /evaluate-batch"}, "properties": {"repobilityId": "dd83a175736db5d9", "scanner": "scanner-primary", "fingerprint": "c7ee05533f0ac3fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a9fd841de22cd2f", "level": "note", "message": {"text": "Unused endpoint: GET /evaluations/{event_id}"}, "properties": {"repobilityId": "fb32661700c55c35", "scanner": "scanner-primary", "fingerprint": "1a9fd841de22cd2f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f3c4eb974e4684dd", "level": "note", "message": {"text": "Unused endpoint: POST /seed"}, "properties": {"repobilityId": "53d961e96df4cbdb", "scanner": "scanner-primary", "fingerprint": "f3c4eb974e4684dd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec67d7928c4dea41", "level": "note", "message": {"text": "Unused endpoint: POST /epcis"}, "properties": {"repobilityId": "659d5a1415dd94f9", "scanner": "scanner-primary", "fingerprint": "ec67d7928c4dea41", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4204c6c27b047b4", "level": "note", "message": {"text": "Unused endpoint: POST /fda"}, "properties": {"repobilityId": "906fca4321c4bffe", "scanner": "scanner-primary", "fingerprint": "a4204c6c27b047b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9558568720c343c6", "level": "note", "message": {"text": "Unused endpoint: GET /formats"}, "properties": {"repobilityId": "6d6235688f66db91", "scanner": "scanner-primary", "fingerprint": "9558568720c343c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1b7bee247ffc801", "level": "note", "message": {"text": "Unused endpoint: GET /summary"}, "properties": {"repobilityId": "214827aa39a63ff3", "scanner": "scanner-primary", "fingerprint": "e1b7bee247ffc801", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-43269e4e79c2e69e", "level": "note", "message": {"text": "Unused endpoint: GET /events"}, "properties": {"repobilityId": "4f05e039a179ca87", "scanner": "scanner-primary", "fingerprint": "43269e4e79c2e69e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9036859bef072758", "level": "note", "message": {"text": "Unused endpoint: GET /events/{event_id}"}, "properties": {"repobilityId": "abb5ceefadcacc36", "scanner": "scanner-primary", "fingerprint": "9036859bef072758", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-26bf5f94d883f709", "level": "note", "message": {"text": "Unused endpoint: GET /rules"}, "properties": {"repobilityId": "349beb8c12aacd97", "scanner": "scanner-primary", "fingerprint": "26bf5f94d883f709", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8bb1d846124aaf68", "level": "note", "message": {"text": "Unused endpoint: GET /exceptions"}, "properties": {"repobilityId": "3c9a525e90fadd93", "scanner": "scanner-primary", "fingerprint": "8bb1d846124aaf68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-42719ea76f9ecae3", "level": "note", "message": {"text": "Unused endpoint: GET /requests"}, "properties": {"repobilityId": "ee51bbb6c08c059d", "scanner": "scanner-primary", "fingerprint": "42719ea76f9ecae3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-218ba6d09673095d", "level": "note", "message": {"text": "Unused endpoint: GET /chain"}, "properties": {"repobilityId": "c43cb9be44189d84", "scanner": "scanner-primary", "fingerprint": "218ba6d09673095d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b0586e35f3d26c3", "level": "note", "message": {"text": "Unused endpoint: GET /export-log"}, "properties": {"repobilityId": "58d8e002ab9ae0b3", "scanner": "scanner-primary", "fingerprint": "4b0586e35f3d26c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9bd561eb3607364b", "level": "note", "message": {"text": "Unused endpoint: GET /stats/blocking"}, "properties": {"repobilityId": "dc4bc3d4b98c595a", "scanner": "scanner-primary", "fingerprint": "9bd561eb3607364b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d884f87a598b481c", "level": "note", "message": {"text": "Unused endpoint: GET /{case_id}"}, "properties": {"repobilityId": "b8a3247ec259750f", "scanner": "scanner-primary", "fingerprint": "d884f87a598b481c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "0f44dd23546c1bd0", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1fa686a61d74f80d", "level": "note", "message": {"text": "Unused endpoint: PATCH /{case_id}/assign"}, "properties": {"repobilityId": "e6ad1fbc58a8d0cb", "scanner": "scanner-primary", "fingerprint": "1fa686a61d74f80d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae832748577068a4", "level": "note", "message": {"text": "Unused endpoint: PATCH /{case_id}/resolve"}, "properties": {"repobilityId": "60137e20c8ca6e7a", "scanner": "scanner-primary", "fingerprint": "ae832748577068a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a6005179780b01b", "level": "note", "message": {"text": "Unused endpoint: PATCH /{case_id}/waive"}, "properties": {"repobilityId": "0f3045c7420fd345", "scanner": "scanner-primary", "fingerprint": "0a6005179780b01b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bbbf13e5d2cf282e", "level": "note", "message": {"text": "Unused endpoint: GET /{case_id}/comments"}, "properties": {"repobilityId": "fe04537035e420bc", "scanner": "scanner-primary", "fingerprint": "bbbf13e5d2cf282e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8ac2bf21c1e4a5c", "level": "note", "message": {"text": "Unused endpoint: POST /{case_id}/comments"}, "properties": {"repobilityId": "d85af5822de673de", "scanner": "scanner-primary", "fingerprint": "c8ac2bf21c1e4a5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db3d606be47916b9", "level": "note", "message": {"text": "Unused endpoint: POST /webhook/{connector_id}"}, "properties": {"repobilityId": "eba80b7a3dcd0de6", "scanner": "scanner-primary", "fingerprint": "db3d606be47916b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9c6a87735659c4d", "level": "note", "message": {"text": "Unused endpoint: GET /ingestion-runs"}, "properties": {"repobilityId": "20e984e89c97712b", "scanner": "scanner-primary", "fingerprint": "c9c6a87735659c4d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e6202052b9c7a28", "level": "note", "message": {"text": "Unused endpoint: GET /ingestion-runs/{run_id}"}, "properties": {"repobilityId": "54763ac52a8e884a", "scanner": "scanner-primary", "fingerprint": "6e6202052b9c7a28", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-39058efd4b63e7a9", "level": "note", "message": {"text": "Unused endpoint: GET /{event_id}"}, "properties": {"repobilityId": "2ee458b2cb368708", "scanner": "scanner-primary", "fingerprint": "39058efd4b63e7a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-026d94717b95b687", "level": "note", "message": {"text": "Unused endpoint: GET /{event_id}/history"}, "properties": {"repobilityId": "e447b4b44eabaeb7", "scanner": "scanner-primary", "fingerprint": "026d94717b95b687", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67614ef3e26e76a7", "level": "note", "message": {"text": "Unused endpoint: GET /trace/forward/{tlc}"}, "properties": {"repobilityId": "952d5258b9cb559d", "scanner": "scanner-primary", "fingerprint": "67614ef3e26e76a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}