{"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-ca4141b808eb4e2f", "name": "Possibly dead Python function: create_pipeline", "shortDescription": {"text": "Possibly dead Python function: create_pipeline"}, "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-72b3e0780dcbb313", "name": "Possibly dead Python function: collect_ids_for_sender", "shortDescription": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "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-080a216b6bcbbff1", "name": "Possibly dead Python function: collect_ids_for_sender", "shortDescription": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "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-63a24574106ef231", "name": "Possibly dead Python function: collect_ids_for_sender", "shortDescription": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "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-d73c4cbcbb5f07be", "name": "Possibly dead Python function: sort_key", "shortDescription": {"text": "Possibly dead Python function: sort_key"}, "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-1017e716d04ac57c", "name": "Possibly dead Python function: route_for_source", "shortDescription": {"text": "Possibly dead Python function: route_for_source"}, "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-9e2b7265d416a6cf", "name": "Possibly dead Python function: resolve_command_args", "shortDescription": {"text": "Possibly dead Python function: resolve_command_args"}, "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-64a904708bb48dff", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-ab64b55615c8aa6d", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-583278bc7d42a94e", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-5442e87466923c7e", "name": "Stray `console.log` in TS/JS \u2014 packages/workers/src/services/document-parser.ts:356", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/workers/src/services/document-parser.ts:356"}, "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-f6aed9143f6aa0fe", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/app/layout.tsx:35", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/app/layout.tsx:35"}, "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-cdd066e41fa28a3b", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/FileDropZone.tsx:347", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/FileDropZone.tsx:347"}, "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-07bc41d3e478b14f", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionDetail.tsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionDetail.tsx:292"}, "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-ae948fbb3c599eae", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionList.tsx:175", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionList.tsx:175"}, "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-26d7b617a01c1993", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/HoldingsTable.tsx:556", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/HoldingsTable.tsx:556"}, "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-dbdef5c348c99f40", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/AllocationChart.tsx:393", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/AllocationChart.tsx:393"}, "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-0e8d1b56526b5a29", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/RecentCaptures.tsx:98", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/RecentCaptures.tsx:98"}, "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-4cb4c5cefece8bf2", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/UpcomingBriefs.tsx:28", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/UpcomingBriefs.tsx:28"}, "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-b02ea7e01bf5d512", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiNavTree.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiNavTree.tsx:114"}, "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-728dd062e2b3011e", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiTabs.tsx:156", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiTabs.tsx:156"}, "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-3a0945d41e9e22b7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/wiki/WikiTabs.tsx:7", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/wiki/WikiTabs.tsx:7"}, "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-fbd3b9abcb0f0df3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/briefs/BriefReader.tsx:13", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/briefs/BriefReader.tsx:13"}, "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-b45960c170c58043", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/IngestProgress.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/IngestProgress.tsx:227"}, "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-91cc60e8c97a67bd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/FileDropZone.tsx:323", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/FileDropZone.tsx:323"}, "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-3872a91791255a77", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/pwa/PwaInstallPrompt.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/pwa/PwaInstallPrompt.tsx:108"}, "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-f4c9af893a6f8b26", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/GroupedResults.tsx:129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/GroupedResults.tsx:129"}, "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-654d70c06c708f69", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/EntityFacets.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/EntityFacets.tsx:79"}, "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-8c1e92dc62f43789", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/DraftCard.tsx:148", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/DraftCard.tsx:148"}, "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-d02860d58d278ba6", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/ThreadView.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/ThreadView.tsx:190"}, "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-5158c7b1de03f20b", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/entities/EntityRow.tsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/entities/EntityRow.tsx:67"}, "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-525668028965e22f", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/WikiSection.tsx:206", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/WikiSection.tsx:206"}, "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-a4f79aeb5f95951a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/SourcesSection.tsx:88", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/SourcesSection.tsx:88"}, "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-20003a6eed792fcd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/ServiceHealthSection.tsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/ServiceHealthSection.tsx:125"}, "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-24392d692ca7436b", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailConfigSection.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailConfigSection.tsx:116"}, "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-b53c610adc1e72b3", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/AIRoutingSection.tsx:84", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/AIRoutingSection.tsx:84"}, "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-0af549cf1b10d8f1", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailAllowlistSection.tsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailAllowlistSection.tsx:162"}, "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-5739b559a8fdcb6e", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/TriggersSection.tsx:134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/TriggersSection.tsx:134"}, "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-d9cba771fa89c4dd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/SkillsTab.tsx:89", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/SkillsTab.tsx:89"}, "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-7edf7698204a7603", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/OverviewTab.tsx:188", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/OverviewTab.tsx:188"}, "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-0a6495a32e26f47c", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/McpActivityTab.tsx:93", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/McpActivityTab.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-41c02e4a8780212e", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/FlowsTab.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/FlowsTab.tsx:79"}, "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-ddf74f10375e637d", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/nav/side-nav.tsx:121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/nav/side-nav.tsx:121"}, "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-a3e033cc78cfa34a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/board/BoardCard.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/board/BoardCard.tsx:75"}, "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-ff917b04684513a8", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/slack/ChannelTable.tsx:545", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/slack/ChannelTable.tsx:545"}, "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-90608a535adf435c", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/mobile/VoiceFileMode.tsx:103", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/mobile/VoiceFileMode.tsx:103"}, "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-185d82c6c19d8cc3", "name": "Stray `console.log` in TS/JS \u2014 packages/shared/src/services/email/hotmail-client.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared/src/services/email/hotmail-client.ts:161"}, "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-54cd0700a33f6055", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-briefs.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-briefs.ts:239"}, "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-f8700e540186ddf0", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-t0-classification.ts:466", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-t0-classification.ts:466"}, "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-802fd0c11f9d42b5", "name": "Stray `console.log` in TS/JS \u2014 cloudflare/synthetic-monitor/src/index.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cloudflare/synthetic-monitor/src/index.ts:59"}, "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-e5859a95ad457f5d", "name": "Stray `console.log` in TS/JS \u2014 cloudflare/email-worker/src/index.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cloudflare/email-worker/src/index.ts:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59221ef80490a30a", "name": "Privileged port 587 in use", "shortDescription": {"text": "Privileged port 587 in use"}, "fullDescription": {"text": "Port 587 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-7a88d3ffda29ceac", "name": "Privileged port 465 in use", "shortDescription": {"text": "Privileged port 465 in use"}, "fullDescription": {"text": "Port 465 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-6c66659d78daf22b", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 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-88a892714eeb0026", "name": "Privileged port 45 in use", "shortDescription": {"text": "Privileged port 45 in use"}, "fullDescription": {"text": "Port 45 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-d01349445cf7436d", "name": "Privileged port 58 in use", "shortDescription": {"text": "Privileged port 58 in use"}, "fullDescription": {"text": "Port 58 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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-835eae4c7f17a2f8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-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-234b5e1c963eaa3c", "name": "Dockerfile runs as root: packages/web-next/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: packages/web-next/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-945216b24fbaa527", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-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-e49c9d29d4f27b78", "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-5888e76d53360828", "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-a054d1b5e59cf88c", "name": "Dockerfile runs as root: docker/ingest-sidecar/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/ingest-sidecar/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fbb53579585aa527", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-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-b140e23dd19b1da7", "name": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02a-sear", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02a-search-flat.html:101"}, "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-92d7478ea60de935", "name": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02b-sear", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02b-search-grouped.html:78"}, "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-8e759637f2585119", "name": "Insecure pattern 'direct_innerhtml_assignment' in reference/handoff/open-brain-cloudscape-design-system/project/preview/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in reference/handoff/open-brain-cloudscape-design-system/project/preview/spacing-scale.html:15"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2224c8998885a33a", "name": "Insecure pattern 'node_child_process' in packages/workers/src/skills/secret-rotation.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/workers/src/skills/secret-rotation.ts: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-5aa2908f81ce2186", "name": "Insecure pattern 'node_child_process' in packages/workers/src/skills/storage-audit.ts:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/workers/src/skills/storage-audit.ts:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2a568db3a6038c37", "name": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts", "shortDescription": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "fullDescription": {"text": "Detected pattern matching slack_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-1e116a20791d4059", "name": "Insecure pattern 'dangerous_innerhtml' in packages/web-next/app/layout.tsx:35", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in packages/web-next/app/layout.tsx:35"}, "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-47d43fcdc7ffd9dc", "name": "Insecure pattern 'domparser_html_parse' in packages/web-next/lib/export.ts:15", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-next/lib/export.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a7c5c66dedacfcb2", "name": "Possible secret in packages/core-api/src/__tests__/config-routes.test.ts", "shortDescription": {"text": "Possible secret in packages/core-api/src/__tests__/config-routes.test.ts"}, "fullDescription": {"text": "Detected pattern matching slack_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4bb041b46a2fd3e9", "name": "Possible secret in packages/core-api/src/__tests__/slack-channel-routes.test.ts", "shortDescription": {"text": "Possible secret in packages/core-api/src/__tests__/slack-channel-routes.test.ts"}, "fullDescription": {"text": "Detected pattern matching slack_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-611096a17e0e84e1", "name": "Insecure pattern 'node_child_process' in packages/shared/src/services/himalaya.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/services/himalaya.ts: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-47abfe1aad20c5c0", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/plaid-link-server.py:216", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/plaid-link-server.py:216"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97098efaf4d58064", "name": "Insecure pattern 'node_child_process' in scripts/test-integration.mjs:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-integration.mjs:10"}, "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-033105622a58760a", "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@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3bc180d1d538d147", "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@v5 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-673fd08c667efadb", "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-6f6e55d292d76b01", "name": "Very large file: scripts/regression-test.mjs (1405 lines)", "shortDescription": {"text": "Very large file: scripts/regression-test.mjs (1405 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-c7a2c7a9a928fd1f", "name": "Very large file: scripts/financial-pipeline.py (3442 lines)", "shortDescription": {"text": "Very large file: scripts/financial-pipeline.py (3442 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-e9b363b2f6b18fc6", "name": "Node manifest has dependencies but no lockfile: packages/workers/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/workers/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9158349d87d073e7", "name": "Node manifest has dependencies but no lockfile: packages/web-next/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/web-next/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efbe038d74dc2cda", "name": "Node manifest has dependencies but no lockfile: packages/core-api/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core-api/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2699d5f16ae11282", "name": "Node manifest has dependencies but no lockfile: packages/shared/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed5f81087ad81be9", "name": "Node manifest has dependencies but no lockfile: packages/slack-bot/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/slack-bot/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2e0c6436a25147c", "name": "Node manifest has dependencies but no lockfile: packages/voice-capture/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/voice-capture/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f87c913f9d130f8", "name": "Node manifest has dependencies but no lockfile: packages/mobile/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/mobile/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 613 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 118 placeholder/mock markers across 59 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec05103c33ada501", "name": "Agent authority lacks a verifier contract: reference/handoff/open-brain-cloudscape-design-system/project/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: reference/handoff/open-brain-cloudscape-design-system/project/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d688be80f65f503c", "name": "Commented-code block (6 lines) in reference/handoff/open-brain-cloudscape-design-system/project/design-canvas.jsx:2", "shortDescription": {"text": "Commented-code block (6 lines) in reference/handoff/open-brain-cloudscape-design-system/project/design-canvas.jsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a545b29b99ed400", "name": "`fetch()` without try/.catch or AbortSignal \u2014 reference/handoff/open-brain-cloudscape-design-system/project/design-canva", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 reference/handoff/open-brain-cloudscape-design-system/project/design-canvas.jsx:63"}, "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-427de5ce5986ee02", "name": "Commented-code block (5 lines) in packages/workers/src/main.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/main.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8754264d7bc4e24", "name": "Commented-code block (5 lines) in packages/workers/src/scheduler.ts:424", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/scheduler.ts:424"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-923505cbfff44231", "name": "Commented-code block (5 lines) in packages/workers/src/jobs/ingest-process.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/ingest-process.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-647a7499d3f1801b", "name": "Commented-code block (5 lines) in packages/workers/src/jobs/budget-check.ts:190", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/budget-check.ts:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a62f3359bfdd6206", "name": "Commented-code block (5 lines) in packages/workers/src/jobs/ingestion-worker.ts:110", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/ingestion-worker.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e42605135dff85d3", "name": "Commented-code block (5 lines) in packages/workers/src/lib/entity-resolver.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/lib/entity-resolver.ts: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-f2816d9f5e6c4c1e", "name": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/skills/weekly-brief.ts:92", "shortDescription": {"text": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/skills/weekly-brief.ts:92"}, "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-9013712f39614aeb", "name": "Legacy-named symbol `memory_consolidation_v1` in packages/workers/src/skills/memory-consolidation.ts:338", "shortDescription": {"text": "Legacy-named symbol `memory_consolidation_v1` in packages/workers/src/skills/memory-consolidation.ts:338"}, "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-21b7521fc70250f3", "name": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/skills/daily-sweep-skill.ts:156", "shortDescription": {"text": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/skills/daily-sweep-skill.ts:156"}, "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-e7448fedd4c0be98", "name": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/skills/drift-monitor.ts:154", "shortDescription": {"text": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/skills/drift-monitor.ts:154"}, "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-bb964bb6575af799", "name": "Legacy-named symbol `entity_brief_v1` in packages/workers/src/skills/entity-brief.ts:342", "shortDescription": {"text": "Legacy-named symbol `entity_brief_v1` in packages/workers/src/skills/entity-brief.ts:342"}, "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-ee4e99c3ae518ea6", "name": "Commented-code block (5 lines) in packages/workers/src/skills/pipeline-health-query.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/skills/pipeline-health-query.ts: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-dacb2fde656af2b6", "name": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/skills/daily-connections.ts:137", "shortDescription": {"text": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/skills/daily-connections.ts:137"}, "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-ea2a56879fa4dd31", "name": "Commented-code block (6 lines) in packages/workers/src/skills/email-compose.ts:314", "shortDescription": {"text": "Commented-code block (6 lines) in packages/workers/src/skills/email-compose.ts:314"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fec08bc715ed16f8", "name": "Commented-code block (9 lines) in packages/workers/src/skills/refine-brief.ts:226", "shortDescription": {"text": "Commented-code block (9 lines) in packages/workers/src/skills/refine-brief.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dc6af55d7274706e", "name": "Commented-code block (5 lines) in packages/workers/src/skills/morning-brief-query.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/skills/morning-brief-query.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-ae2fcbff9475477e", "name": "Legacy-named symbol `document_v2` in packages/workers/src/services/document-parser.ts:77", "shortDescription": {"text": "Legacy-named symbol `document_v2` in packages/workers/src/services/document-parser.ts:77"}, "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-7740f9af8c3ca467", "name": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/__tests__/daily-sweep-skill.test.ts:556", "shortDescription": {"text": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/__tests__/daily-sweep-skill.test.ts:556"}, "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-2bab094d32c16fe3", "name": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/__tests__/drift-monitor.test.ts:800", "shortDescription": {"text": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/__tests__/drift-monitor.test.ts:800"}, "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-ce39b18d4f9a9699", "name": "Commented-code block (6 lines) in packages/workers/src/__tests__/email-classify.test.ts:346", "shortDescription": {"text": "Commented-code block (6 lines) in packages/workers/src/__tests__/email-classify.test.ts:346"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc7872aff55e8f80", "name": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/__tests__/daily-connections.test.ts:573", "shortDescription": {"text": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/__tests__/daily-connections.test.ts:573"}, "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-d2439e98ce991c37", "name": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/__tests__/weekly-brief.test.ts:330", "shortDescription": {"text": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/__tests__/weekly-brief.test.ts:330"}, "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-8c6dc58b17fb69fb", "name": "Commented-code block (5 lines) in packages/workers/src/__tests__/email-compose.test.ts:352", "shortDescription": {"text": "Commented-code block (5 lines) in packages/workers/src/__tests__/email-compose.test.ts:352"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9e15f80f7cf4b80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/workers/src/__tests__/integration/ingest-e2e.test.ts:176", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/workers/src/__tests__/integration/ingest-e2e.test.ts:176"}, "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-7464ff743d580c9e", "name": "Commented-code block (5 lines) in packages/web-next/tests/smoke/quick-capture.spec.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-next/tests/smoke/quick-capture.spec.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-0ce421bad607886d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/settings/DangerZoneSection.tsx:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/settings/DangerZoneSection.tsx:102"}, "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-09c54ba32691423d", "name": "Commented-code block (5 lines) in packages/web-next/components/onboarding/FirstBriefStep.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-next/components/onboarding/FirstBriefStep.tsx: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-db38b4c65ee3aab8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/system/AdminResetSection.tsx:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/system/AdminResetSection.tsx:91"}, "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-716c8fe61d0f1b8f", "name": "Commented-code block (6 lines) in packages/web-next/test/msw-handlers.ts:61", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-next/test/msw-handlers.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0eecda6970e026bd", "name": "Commented-code block (5 lines) in packages/web-next/lib/api/config.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-next/lib/api/config.ts: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-8816a3d278d38a8b", "name": "Commented-code block (10 lines) in packages/web-next/lib/api/wiki.ts:17", "shortDescription": {"text": "Commented-code block (10 lines) in packages/web-next/lib/api/wiki.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-08f2798845fda88f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/lib/api/voice-captures.ts:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/lib/api/voice-captures.ts:23"}, "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-77f580e57d143bb2", "name": "Legacy-named symbol `admin_prewipe_backup` in packages/web-next/lib/api/admin.ts:129", "shortDescription": {"text": "Legacy-named symbol `admin_prewipe_backup` in packages/web-next/lib/api/admin.ts:129"}, "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-82404dd9226ecffa", "name": "Commented-code block (8 lines) in packages/core-api/src/app.ts:126", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-api/src/app.ts: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-97f5cffd3e461152", "name": "Commented-code block (5 lines) in packages/core-api/src/schemas/capture.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/schemas/capture.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-ef1e7092d33a465f", "name": "Commented-code block (5 lines) in packages/core-api/src/middleware/__tests__/mobile-auth.test.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/middleware/__tests__/mobile-auth.test.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-ecb6af22391bd614", "name": "Commented-code block (5 lines) in packages/core-api/src/services/sse.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/services/sse.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b89d0551373957a", "name": "Legacy-named symbol `governance_v1` in packages/core-api/src/services/governance-engine.ts:100", "shortDescription": {"text": "Legacy-named symbol `governance_v1` in packages/core-api/src/services/governance-engine.ts:100"}, "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-edb4ee41ad16bd08", "name": "Commented-code block (5 lines) in packages/core-api/src/services/admin.service.ts:177", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/services/admin.service.ts:177"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42823298013f1d2f", "name": "Commented-code block (6 lines) in packages/core-api/src/services/bet.ts:211", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/services/bet.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1a34c934eb6d627", "name": "Commented-code block (5 lines) in packages/core-api/src/__tests__/mobile-auth-routing.test.ts:215", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/mobile-auth-routing.test.ts:215"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48e178da6598670d", "name": "Commented-code block (6 lines) in packages/core-api/src/__tests__/commitment-routes.test.ts:42", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/commitment-routes.test.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-752b79fd8c393eef", "name": "Commented-code block (6 lines) in packages/core-api/src/__tests__/events-routes.test.ts:27", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/events-routes.test.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77653e7c682a5dba", "name": "Commented-code block (6 lines) in packages/core-api/src/__tests__/mobile-rate-limit.test.ts:195", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/mobile-rate-limit.test.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6bb7667f0299f39", "name": "Commented-code block (5 lines) in packages/core-api/src/__tests__/rate-limit.test.ts:314", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/rate-limit.test.ts:314"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-066e6ba8359c5915", "name": "Commented-code block (5 lines) in packages/core-api/src/__tests__/admin-service.test.ts:213", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/admin-service.test.ts:213"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b4a26aea6b63443", "name": "Legacy-named symbol `scoreOld` in packages/core-api/src/__tests__/search-service.test.ts:131", "shortDescription": {"text": "Legacy-named symbol `scoreOld` in packages/core-api/src/__tests__/search-service.test.ts: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-4ca93a118430d63f", "name": "Commented-code block (6 lines) in packages/core-api/src/__tests__/entity-resolution.test.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/entity-resolution.test.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cfb420086b2eb98", "name": "Commented-code block (10 lines) in packages/core-api/src/__tests__/ingest-routes.test.ts:14", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core-api/src/__tests__/ingest-routes.test.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-133d96c793031eda", "name": "Commented-code block (5 lines) in packages/core-api/src/__tests__/email-draft-service.test.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/email-draft-service.test.ts: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-5e4be53cb0d4f0c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/mcp-tools.test.ts:536", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/mcp-tools.test.ts:536"}, "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-b0db4f388494ef16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/voice-captures.test.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/voice-captures.test.ts:91"}, "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-8cb12042ce3154ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/helpers.ts:333", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/helpers.ts:333"}, "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-eaa47ed2198c1d4a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-internal.test.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-internal.test.ts:39"}, "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-b751d848d796f0f4", "name": "Commented-code block (7 lines) in packages/core-api/src/__tests__/integration/rate-limit-public.test.ts:82", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-api/src/__tests__/integration/rate-limit-public.test.ts: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-321ca6e88496739f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-public.test.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-public.test.ts:94"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-795578bff40a9053", "name": "Commented-code block (7 lines) in packages/core-api/src/routes/email.ts:160", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/email.ts:160"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cd388fa0b830688", "name": "Commented-code block (8 lines) in packages/core-api/src/routes/documents.ts:296", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core-api/src/routes/documents.ts:296"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc73b867ddd762aa", "name": "Commented-code block (5 lines) in packages/core-api/src/routes/intelligence.ts:159", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/intelligence.ts: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-5b0c8f81d80e8653", "name": "Commented-code block (5 lines) in packages/core-api/src/routes/bets.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/bets.ts: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-8c1a0db3c1e25c5e", "name": "Commented-code block (5 lines) in packages/core-api/src/routes/voice-sessions.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/voice-sessions.ts: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-9c9bdd6350d51084", "name": "Commented-code block (10 lines) in packages/core-api/src/routes/commitments.ts:20", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core-api/src/routes/commitments.ts: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-4e838702700e9c9a", "name": "Commented-code block (9 lines) in packages/core-api/src/routes/briefs.ts:169", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core-api/src/routes/briefs.ts:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e25328a16e761c6", "name": "Commented-code block (6 lines) in packages/core-api/src/routes/entities.ts:35", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core-api/src/routes/entities.ts: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-a8ce6663c5abccb4", "name": "Commented-code block (7 lines) in packages/core-api/src/routes/ingest.ts:34", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/ingest.ts: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-ff8792d5e4ce6f40", "name": "Commented-code block (7 lines) in packages/core-api/src/routes/triggers.ts:24", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/triggers.ts: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-187e5934034bcc2e", "name": "Commented-code block (5 lines) in packages/core-api/src/routes/admin.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/admin.ts: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-732c9bfcb25e8018", "name": "Commented-code block (5 lines) in packages/shared/src/types/commitment.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/types/commitment.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3485176b157ce626", "name": "Commented-code block (7 lines) in packages/shared/src/types/brief.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/shared/src/types/brief.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-24388121dafbfe05", "name": "Commented-code block (6 lines) in packages/shared/src/schema/commitments.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/schema/commitments.ts:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e44a9c47bb45645a", "name": "Commented-code block (8 lines) in packages/shared/src/schema/ingest.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in packages/shared/src/schema/ingest.ts: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-9553e24cdbd34cff", "name": "Commented-code block (5 lines) in packages/shared/src/schema/supporting.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared/src/schema/supporting.ts: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-9772572dc4bfca0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/slack-messenger.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/slack-messenger.ts: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-39f34ae577c7d93f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/email/gmail-client.ts:5", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/email/gmail-client.ts:5"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb786886b4766b53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/lib/core-api-client.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/lib/core-api-client.ts:43"}, "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-4dff92f13d3f366b", "name": "Commented-code block (8 lines) in packages/slack-bot/src/handlers/auto-response.ts:320", "shortDescription": {"text": "Commented-code block (8 lines) in packages/slack-bot/src/handlers/auto-response.ts:320"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-991ef444eb49bab6", "name": "Commented-code block (6 lines) in packages/slack-bot/src/handlers/commands/email.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in packages/slack-bot/src/handlers/commands/email.ts: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-4944e8dfb0e040dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/__tests__/capture-handler.test.ts:259", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/__tests__/capture-handler.test.ts:259"}, "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-e3940ba5a3f036b4", "name": "Commented-code block (6 lines) in packages/voice-capture/src/__tests__/server.test.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in packages/voice-capture/src/__tests__/server.test.ts: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-5bf44ecfb98cbcba", "name": "Commented-code block (7 lines) in packages/mobile/src/lib/api-client.ts:34", "shortDescription": {"text": "Commented-code block (7 lines) in packages/mobile/src/lib/api-client.ts: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-1c71857f3cb7f073", "name": "Commented-code block (5 lines) in packages/mobile/__tests__/components/TabBar.test.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/mobile/__tests__/components/TabBar.test.tsx: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-0eae3902d84e4155", "name": "Commented-code block (5 lines) in scripts/regression-test.mjs:159", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/regression-test.mjs: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-b2f0a51247d94a0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/regression-test.mjs:1190", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/regression-test.mjs:1190"}, "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-cfe83905cd33d659", "name": "Commented-code block (10 lines) in scripts/financial-pipeline.py:1980", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/financial-pipeline.py:1980"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f09d983561fd3e71", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-repair.py:324", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-repair.py:324"}, "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-58bbc9d48fa84fb0", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/insurance-gap-analysis.py:676", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/insurance-gap-analysis.py:676"}, "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-73509910a493fd41", "name": "Legacy-named symbol `is_conflict_copy` in scripts/file-inventory.py:74", "shortDescription": {"text": "Legacy-named symbol `is_conflict_copy` in scripts/file-inventory.py:74"}, "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-4c1d3abb9b97ade6", "name": "Legacy-named symbol `days_old` in scripts/dedup-and-archive.py:80", "shortDescription": {"text": "Legacy-named symbol `days_old` in scripts/dedup-and-archive.py:80"}, "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-5ac27dd2452b8651", "name": "Commented-code block (5 lines) in scripts/tests/test_lab_synthesis.py:158", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tests/test_lab_synthesis.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-c7c4b6d551746aad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/synthetic-monitor/src/index.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/synthetic-monitor/src/index.ts:75"}, "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-df6cdf6a3e445225", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/email-worker/src/index.ts:176", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/email-worker/src/index.ts:176"}, "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-500e3b7d9fe8faf0", "name": "76 env vars used in code but missing from .env.example", "shortDescription": {"text": "76 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_RESET_SKIP_PGDUMP`, `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, `API_URL`, `BUDGET_HARD_LIMIT`, `BUDGET_HARD_LIMIT_NON_CLAUDE`, `BUDGET_SOFT_LIMIT`, `BUDGET_SOFT_LIMIT_NON_CLAUDE` + 68 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-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/email-cleanup-pass4.py:authenticate, scripts/email-cleanup-pass2.py:authenticate\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-e7a7a535fbb04a67", "name": "FastAPI POST `extract` without auth dependency \u2014 packages/file-ingestion/src/extract.py:448", "shortDescription": {"text": "FastAPI POST `extract` without auth dependency \u2014 packages/file-ingestion/src/extract.py:448"}, "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-88fd6033a0b8f568", "name": "Flask mutation route `create_link_token` without `@login_required` \u2014 scripts/plaid-link-server.py:317", "shortDescription": {"text": "Flask mutation route `create_link_token` without `@login_required` \u2014 scripts/plaid-link-server.py:317"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e73d2a7e242949d", "name": "Flask mutation route `exchange_public_token` without `@login_required` \u2014 scripts/plaid-link-server.py:341", "shortDescription": {"text": "Flask mutation route `exchange_public_token` without `@login_required` \u2014 scripts/plaid-link-server.py:341"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5c085eb72081c1d", "name": "Dangling fetch: POST https://slack.com/api/chat.postMessage (scripts/regression-test.mjs:93)", "shortDescription": {"text": "Dangling fetch: POST https://slack.com/api/chat.postMessage (scripts/regression-test.mjs:93)"}, "fullDescription": {"text": "`scripts/regression-test.mjs:93` calls `POST https://slack.com/api/chat.postMessage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/chat.postmessage`\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-b6ba081c3edcf360", "name": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-te", "shortDescription": {"text": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-test.mjs:104)"}, "fullDescription": {"text": "`scripts/regression-test.mjs:104` calls `GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/conversations.replies`\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-2b25050deb7c5da4", "name": "Dangling fetch: GET https://slack.com/api/conversations.history?channel=${SLACK_CHANNEL}&limit=50 (scripts/regression-te", "shortDescription": {"text": "Dangling fetch: GET https://slack.com/api/conversations.history?channel=${SLACK_CHANNEL}&limit=50 (scripts/regression-test.mjs:1238)"}, "fullDescription": {"text": "`scripts/regression-test.mjs:1238` calls `GET https://slack.com/api/conversations.history?channel=${SLACK_CHANNEL}&limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/conversations.history`\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-65598f4d6179a983", "name": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-te", "shortDescription": {"text": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-test.mjs:1246)"}, "fullDescription": {"text": "`scripts/regression-test.mjs:1246` calls `GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/slack.com/api/conversations.replies`\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-8b24644db4384428", "name": "Dangling fetch: POST /voice-api/upload (packages/web-next/components/voice/FileDropZone.tsx:106)", "shortDescription": {"text": "Dangling fetch: POST /voice-api/upload (packages/web-next/components/voice/FileDropZone.tsx:106)"}, "fullDescription": {"text": "`packages/web-next/components/voice/FileDropZone.tsx:106` calls `POST /voice-api/upload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/voice-api/upload`\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-e86cf29c7fdf791b", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/settings/DangerZoneSection.tsx:102)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/settings/DangerZoneSection.tsx:102)"}, "fullDescription": {"text": "`packages/web-next/components/settings/DangerZoneSection.tsx:102` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/reset-data`\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-c1638743727c519b", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/system/AdminResetSection.tsx:91)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/system/AdminResetSection.tsx:91)"}, "fullDescription": {"text": "`packages/web-next/components/system/AdminResetSection.tsx:91` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/v1/admin/reset-data`\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-4452878d8a68d3a1", "name": "Dangling fetch: POST /skills/${encodeURIComponent(name)}/trigger (packages/web-next/lib/api/skills.ts:30)", "shortDescription": {"text": "Dangling fetch: POST /skills/${encodeURIComponent(name)}/trigger (packages/web-next/lib/api/skills.ts:30)"}, "fullDescription": {"text": "`packages/web-next/lib/api/skills.ts:30` calls `POST /skills/${encodeURIComponent(name)}/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/skills/<p>/trigger`\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-dc2d11c50a2a544b", "name": "Dangling fetch: GET /email/drafts/${encodeURIComponent(id)} (packages/web-next/lib/api/email.ts:83)", "shortDescription": {"text": "Dangling fetch: GET /email/drafts/${encodeURIComponent(id)} (packages/web-next/lib/api/email.ts:83)"}, "fullDescription": {"text": "`packages/web-next/lib/api/email.ts:83` calls `GET /email/drafts/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/email/drafts/<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-eb70ab48a606680f", "name": "Dangling fetch: GET /voice/sessions/active (packages/web-next/lib/api/voice.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /voice/sessions/active (packages/web-next/lib/api/voice.ts:61)"}, "fullDescription": {"text": "`packages/web-next/lib/api/voice.ts:61` calls `GET /voice/sessions/active` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/voice/sessions/active`\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-522dc399b716a77f", "name": "Dangling fetch: GET /voice/sessions/${encodeURIComponent(id)} (packages/web-next/lib/api/voice.ts:68)", "shortDescription": {"text": "Dangling fetch: GET /voice/sessions/${encodeURIComponent(id)} (packages/web-next/lib/api/voice.ts:68)"}, "fullDescription": {"text": "`packages/web-next/lib/api/voice.ts:68` calls `GET /voice/sessions/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/voice/sessions/<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-2150c6e421177987", "name": "Dangling fetch: GET /intelligence/summary (packages/web-next/lib/api/intelligence.ts:32)", "shortDescription": {"text": "Dangling fetch: GET /intelligence/summary (packages/web-next/lib/api/intelligence.ts:32)"}, "fullDescription": {"text": "`packages/web-next/lib/api/intelligence.ts:32` calls `GET /intelligence/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/intelligence/summary`\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-572c4e1dbaa09cf7", "name": "Dangling fetch: GET /intelligence/connections/latest (packages/web-next/lib/api/intelligence.ts:37)", "shortDescription": {"text": "Dangling fetch: GET /intelligence/connections/latest (packages/web-next/lib/api/intelligence.ts:37)"}, "fullDescription": {"text": "`packages/web-next/lib/api/intelligence.ts:37` calls `GET /intelligence/connections/latest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/intelligence/connections/latest`\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-756903f73538b40e", "name": "Dangling fetch: GET /intelligence/drift/latest (packages/web-next/lib/api/intelligence.ts:42)", "shortDescription": {"text": "Dangling fetch: GET /intelligence/drift/latest (packages/web-next/lib/api/intelligence.ts:42)"}, "fullDescription": {"text": "`packages/web-next/lib/api/intelligence.ts:42` calls `GET /intelligence/drift/latest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/intelligence/drift/latest`\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-518583dac25effe4", "name": "Dangling fetch: GET /system/health (packages/web-next/lib/api/system-health.ts:131)", "shortDescription": {"text": "Dangling fetch: GET /system/health (packages/web-next/lib/api/system-health.ts:131)"}, "fullDescription": {"text": "`packages/web-next/lib/api/system-health.ts:131` calls `GET /system/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/system/health`\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-bfd5e29f6fd891e2", "name": "Dangling fetch: GET /system/flows${qs} (packages/web-next/lib/api/system-health.ts:137)", "shortDescription": {"text": "Dangling fetch: GET /system/flows${qs} (packages/web-next/lib/api/system-health.ts:137)"}, "fullDescription": {"text": "`packages/web-next/lib/api/system-health.ts:137` calls `GET /system/flows${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/system/flows/<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-dea6f62f98e9509f", "name": "Dangling fetch: GET /system/infrastructure (packages/web-next/lib/api/system-health.ts:142)", "shortDescription": {"text": "Dangling fetch: GET /system/infrastructure (packages/web-next/lib/api/system-health.ts:142)"}, "fullDescription": {"text": "`packages/web-next/lib/api/system-health.ts:142` calls `GET /system/infrastructure` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/system/infrastructure`\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-9f8894b76f07d77c", "name": "Dangling fetch: GET /search${qs} (packages/web-next/lib/api/search.ts:42)", "shortDescription": {"text": "Dangling fetch: GET /search${qs} (packages/web-next/lib/api/search.ts:42)"}, "fullDescription": {"text": "`packages/web-next/lib/api/search.ts:42` calls `GET /search${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/search/<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-f52859cadbc01d0a", "name": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/web-next/lib/api/captures.ts:42)", "shortDescription": {"text": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/web-next/lib/api/captures.ts:42)"}, "fullDescription": {"text": "`packages/web-next/lib/api/captures.ts:42` calls `GET /captures/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures/<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-5d604176fe870b98", "name": "Dangling fetch: POST /captures (packages/web-next/lib/api/captures.ts:47)", "shortDescription": {"text": "Dangling fetch: POST /captures (packages/web-next/lib/api/captures.ts:47)"}, "fullDescription": {"text": "`packages/web-next/lib/api/captures.ts:47` calls `POST /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-b23a00d056a52c28", "name": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/web-next/lib/api/commitments.ts:52)", "shortDescription": {"text": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/web-next/lib/api/commitments.ts:52)"}, "fullDescription": {"text": "`packages/web-next/lib/api/commitments.ts:52` calls `PATCH /commitments/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/commitments/<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-d7a74f676e91a51a", "name": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/web-next/lib/api/briefs.ts:104)", "shortDescription": {"text": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/web-next/lib/api/briefs.ts:104)"}, "fullDescription": {"text": "`packages/web-next/lib/api/briefs.ts:104` calls `PATCH /briefs/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/briefs/<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-3523521addfa538c", "name": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/dismiss (packages/web-next/lib/api/briefs.ts:112)", "shortDescription": {"text": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/dismiss (packages/web-next/lib/api/briefs.ts:112)"}, "fullDescription": {"text": "`packages/web-next/lib/api/briefs.ts:112` calls `POST /briefs/${encodeURIComponent(id)}/dismiss` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/briefs/<p>/dismiss`\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-e86b39ee2734b30f", "name": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/refine (packages/web-next/lib/api/briefs.ts:119)", "shortDescription": {"text": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/refine (packages/web-next/lib/api/briefs.ts:119)"}, "fullDescription": {"text": "`packages/web-next/lib/api/briefs.ts:119` calls `POST /briefs/${encodeURIComponent(id)}/refine` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/briefs/<p>/refine`\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-a929c8103553aeb7", "name": "Dangling fetch: POST /synthesize (packages/web-next/lib/api/synthesize.ts:38)", "shortDescription": {"text": "Dangling fetch: POST /synthesize (packages/web-next/lib/api/synthesize.ts:38)"}, "fullDescription": {"text": "`packages/web-next/lib/api/synthesize.ts:38` calls `POST /synthesize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/synthesize`\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-6286c40e90de1cc5", "name": "Dangling fetch: GET /config/integrations (packages/web-next/lib/api/config.ts:27)", "shortDescription": {"text": "Dangling fetch: GET /config/integrations (packages/web-next/lib/api/config.ts:27)"}, "fullDescription": {"text": "`packages/web-next/lib/api/config.ts:27` calls `GET /config/integrations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/config/integrations`\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-b84cd41793566442", "name": "Dangling fetch: GET /triggers (packages/web-next/lib/api/config.ts:55)", "shortDescription": {"text": "Dangling fetch: GET /triggers (packages/web-next/lib/api/config.ts:55)"}, "fullDescription": {"text": "`packages/web-next/lib/api/config.ts:55` calls `GET /triggers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/triggers`\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-750916af52c2653b", "name": "Dangling fetch: POST /triggers (packages/web-next/lib/api/config.ts:64)", "shortDescription": {"text": "Dangling fetch: POST /triggers (packages/web-next/lib/api/config.ts:64)"}, "fullDescription": {"text": "`packages/web-next/lib/api/config.ts:64` calls `POST /triggers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/triggers`\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-dd79fd091ca41783", "name": "Dangling fetch: GET /config/ai-routing (packages/web-next/lib/api/config.ts:91)", "shortDescription": {"text": "Dangling fetch: GET /config/ai-routing (packages/web-next/lib/api/config.ts:91)"}, "fullDescription": {"text": "`packages/web-next/lib/api/config.ts:91` calls `GET /config/ai-routing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/config/ai-routing`\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-f0db077181765067", "name": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:23)", "shortDescription": {"text": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:23)"}, "fullDescription": {"text": "`packages/web-next/lib/api/settings.ts:23` calls `GET /settings/${encodeURIComponent(key)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/settings/<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-27950ce4a23f6cf2", "name": "Dangling fetch: PUT /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:31)", "shortDescription": {"text": "Dangling fetch: PUT /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:31)"}, "fullDescription": {"text": "`packages/web-next/lib/api/settings.ts:31` calls `PUT /settings/${encodeURIComponent(key)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/settings/<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-16640f16065460c4", "name": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/web-next/lib/api/entities.ts:43)", "shortDescription": {"text": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/web-next/lib/api/entities.ts:43)"}, "fullDescription": {"text": "`packages/web-next/lib/api/entities.ts:43` calls `GET /entities/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/entities/<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-ae1bb532e6537e11", "name": "Dangling fetch: POST /entities/${encodeURIComponent(sourceId)}/merge (packages/web-next/lib/api/entities.ts:54)", "shortDescription": {"text": "Dangling fetch: POST /entities/${encodeURIComponent(sourceId)}/merge (packages/web-next/lib/api/entities.ts:54)"}, "fullDescription": {"text": "`packages/web-next/lib/api/entities.ts:54` calls `POST /entities/${encodeURIComponent(sourceId)}/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/entities/<p>/merge`\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-093250f73e1193d0", "name": "Dangling fetch: POST /entities/${encodeURIComponent(id)}/ask (packages/web-next/lib/api/entities.ts:91)", "shortDescription": {"text": "Dangling fetch: POST /entities/${encodeURIComponent(id)}/ask (packages/web-next/lib/api/entities.ts:91)"}, "fullDescription": {"text": "`packages/web-next/lib/api/entities.ts:91` calls `POST /entities/${encodeURIComponent(id)}/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/entities/<p>/ask`\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-45f31d1dc8224485", "name": "Dangling fetch: GET /wiki/pages${qs} (packages/web-next/lib/api/wiki.ts:87)", "shortDescription": {"text": "Dangling fetch: GET /wiki/pages${qs} (packages/web-next/lib/api/wiki.ts:87)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:87` calls `GET /wiki/pages${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/pages/<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-93a7ec07cef4b6bd", "name": "Dangling fetch: GET /wiki/pages/${encodedPath} (packages/web-next/lib/api/wiki.ts:98)", "shortDescription": {"text": "Dangling fetch: GET /wiki/pages/${encodedPath} (packages/web-next/lib/api/wiki.ts:98)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:98` calls `GET /wiki/pages/${encodedPath}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/pages/<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-2687cfc868f12b97", "name": "Dangling fetch: GET /wiki/recent-changes${qs} (packages/web-next/lib/api/wiki.ts:104)", "shortDescription": {"text": "Dangling fetch: GET /wiki/recent-changes${qs} (packages/web-next/lib/api/wiki.ts:104)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:104` calls `GET /wiki/recent-changes${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/recent-changes/<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-c6bb31f79b530614", "name": "Dangling fetch: GET /wiki/lint-report (packages/web-next/lib/api/wiki.ts:109)", "shortDescription": {"text": "Dangling fetch: GET /wiki/lint-report (packages/web-next/lib/api/wiki.ts:109)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:109` calls `GET /wiki/lint-report` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/lint-report`\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-462579cdce0001a9", "name": "Dangling fetch: GET /wiki/stats (packages/web-next/lib/api/wiki.ts:114)", "shortDescription": {"text": "Dangling fetch: GET /wiki/stats (packages/web-next/lib/api/wiki.ts:114)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:114` calls `GET /wiki/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/stats`\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-13895a2477252054", "name": "Dangling fetch: POST /wiki/lint (packages/web-next/lib/api/wiki.ts:127)", "shortDescription": {"text": "Dangling fetch: POST /wiki/lint (packages/web-next/lib/api/wiki.ts:127)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:127` calls `POST /wiki/lint` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/lint`\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-1ff5156789751ac8", "name": "Dangling fetch: POST /wiki/resynthesize (packages/web-next/lib/api/wiki.ts:132)", "shortDescription": {"text": "Dangling fetch: POST /wiki/resynthesize (packages/web-next/lib/api/wiki.ts:132)"}, "fullDescription": {"text": "`packages/web-next/lib/api/wiki.ts:132` calls `POST /wiki/resynthesize` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/wiki/resynthesize`\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-964ae40ebf09262a", "name": "Dangling fetch: GET /ingest/uploads${qs} (packages/web-next/lib/api/ingest.ts:134)", "shortDescription": {"text": "Dangling fetch: GET /ingest/uploads${qs} (packages/web-next/lib/api/ingest.ts:134)"}, "fullDescription": {"text": "`packages/web-next/lib/api/ingest.ts:134` calls `GET /ingest/uploads${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ingest/uploads/<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-cb78b325634df531", "name": "Dangling fetch: GET /ingest/uploads/${encodeURIComponent(id)} (packages/web-next/lib/api/ingest.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /ingest/uploads/${encodeURIComponent(id)} (packages/web-next/lib/api/ingest.ts:141)"}, "fullDescription": {"text": "`packages/web-next/lib/api/ingest.ts:141` calls `GET /ingest/uploads/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ingest/uploads/<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-8fae65892096dd34", "name": "Dangling fetch: POST /ingest/uploads/${encodeURIComponent(id)}/process (packages/web-next/lib/api/ingest.ts:149)", "shortDescription": {"text": "Dangling fetch: POST /ingest/uploads/${encodeURIComponent(id)}/process (packages/web-next/lib/api/ingest.ts:149)"}, "fullDescription": {"text": "`packages/web-next/lib/api/ingest.ts:149` calls `POST /ingest/uploads/${encodeURIComponent(id)}/process` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ingest/uploads/<p>/process`\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-3429a553369dfcc1", "name": "Dangling fetch: POST /ingest/process-now${qs} (packages/web-next/lib/api/ingest.ts:161)", "shortDescription": {"text": "Dangling fetch: POST /ingest/process-now${qs} (packages/web-next/lib/api/ingest.ts:161)"}, "fullDescription": {"text": "`packages/web-next/lib/api/ingest.ts:161` calls `POST /ingest/process-now${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ingest/process-now/<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-ed47bca23174701a", "name": "Dangling fetch: POST /admin/queues/${encodeURIComponent(name)}/clear (packages/web-next/lib/api/admin.ts:34)", "shortDescription": {"text": "Dangling fetch: POST /admin/queues/${encodeURIComponent(name)}/clear (packages/web-next/lib/api/admin.ts:34)"}, "fullDescription": {"text": "`packages/web-next/lib/api/admin.ts:34` calls `POST /admin/queues/${encodeURIComponent(name)}/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/queues/<p>/clear`\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-dc6e49c4945ac815", "name": "Dangling fetch: GET /admin/slack/channels (packages/web-next/lib/api/admin.ts:94)", "shortDescription": {"text": "Dangling fetch: GET /admin/slack/channels (packages/web-next/lib/api/admin.ts:94)"}, "fullDescription": {"text": "`packages/web-next/lib/api/admin.ts:94` calls `GET /admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/slack/channels`\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-91b0538bdc9170a7", "name": "Dangling fetch: POST /admin/slack/channels/${encodeURIComponent(id)}/archive (packages/web-next/lib/api/admin.ts:102)", "shortDescription": {"text": "Dangling fetch: POST /admin/slack/channels/${encodeURIComponent(id)}/archive (packages/web-next/lib/api/admin.ts:102)"}, "fullDescription": {"text": "`packages/web-next/lib/api/admin.ts:102` calls `POST /admin/slack/channels/${encodeURIComponent(id)}/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/slack/channels/<p>/archive`\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-e895d5c94551b118", "name": "Dangling fetch: POST /admin/reset-data (packages/web-next/lib/api/admin.ts:138)", "shortDescription": {"text": "Dangling fetch: POST /admin/reset-data (packages/web-next/lib/api/admin.ts:138)"}, "fullDescription": {"text": "`packages/web-next/lib/api/admin.ts:138` calls `POST /admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/reset-data`\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-d67f7312469dfd3b", "name": "Dangling fetch: GET /stats (packages/web-next/lib/api/stats.ts:34)", "shortDescription": {"text": "Dangling fetch: GET /stats (packages/web-next/lib/api/stats.ts:34)"}, "fullDescription": {"text": "`packages/web-next/lib/api/stats.ts:34` calls `GET /stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/stats`\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-8a241160a3de5450", "name": "Dangling fetch: GET /api/v1/settings (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:204)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/settings (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:204)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/mobile-auth-routing.test.ts:204` calls `GET /api/v1/settings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/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-204b139f6c4d1362", "name": "Dangling fetch: POST /mcp (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:221)", "shortDescription": {"text": "Dangling fetch: POST /mcp (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:221)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/mobile-auth-routing.test.ts:221` calls `POST /mcp` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/mcp`\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-d590e8f9de3ed7d6", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments (packages/core-api/src/__tests__/commitment-routes.test.t", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments (packages/core-api/src/__tests__/commitment-routes.test.ts:193)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:193` calls `GET /api/v1/entities/entity-uuid-1/commitments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/commitments`\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-630db8e7516d7290", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?include_resolved=true (packages/core-api/src/__tests__/co", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?include_resolved=true (packages/core-api/src/__tests__/commitment-routes.test.ts:209)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:209` calls `GET /api/v1/entities/entity-uuid-1/commitments?include_resolved=true` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/commitments`\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-1c9f6959693e9b02", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?limit=5&offset=10 (packages/core-api/src/__tests__/commit", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?limit=5&offset=10 (packages/core-api/src/__tests__/commitment-routes.test.ts:220)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:220` calls `GET /api/v1/entities/entity-uuid-1/commitments?limit=5&offset=10` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/commitments`\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-62f0effba5e164e5", "name": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:242)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:242)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:242` calls `PATCH /api/v1/commitments/comm-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/comm-uuid-1`\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-43a81b65ce3eab54", "name": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-2 (packages/core-api/src/__tests__/commitment-routes.test.ts:262)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-2 (packages/core-api/src/__tests__/commitment-routes.test.ts:262)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:262` calls `PATCH /api/v1/commitments/comm-uuid-2` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/comm-uuid-2`\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-fadf8d73ee66c241", "name": "Dangling fetch: PATCH /api/v1/commitments/nonexistent-id (packages/core-api/src/__tests__/commitment-routes.test.ts:278)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/nonexistent-id (packages/core-api/src/__tests__/commitment-routes.test.ts:278)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:278` calls `PATCH /api/v1/commitments/nonexistent-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/nonexistent-id`\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-a4fccf74e1ea15bc", "name": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:293)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:293)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:293` calls `PATCH /api/v1/commitments/comm-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/comm-uuid-1`\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-cde297191537dab1", "name": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:308)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:308)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:308` calls `PATCH /api/v1/commitments/comm-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/comm-uuid-1`\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-26823487fb740c38", "name": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:323)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:323)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/commitment-routes.test.ts:323` calls `PATCH /api/v1/commitments/comm-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/commitments/comm-uuid-1`\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-f4b4817556e1fadc", "name": "Dangling fetch: GET /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:113)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:113)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:113` calls `GET /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-0cc56de3513401a5", "name": "Dangling fetch: POST /api/v1/email/drafts/draft-uuid-1/send (packages/core-api/src/__tests__/email-routes.test.ts:262)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/email/drafts/draft-uuid-1/send (packages/core-api/src/__tests__/email-routes.test.ts:262)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:262` calls `POST /api/v1/email/drafts/draft-uuid-1/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1/send`\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-dbad34df5b932226", "name": "Dangling fetch: DELETE /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:283)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:283)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:283` calls `DELETE /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-6097d0f35aaf6773", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:305)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:305)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:305` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-057aade97cc59a71", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:328)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:328)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:328` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-61dec7ac89df7dc7", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:353)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:353)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:353` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-e06295d63fb16c90", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:372)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:372)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:372` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-73bcce3b373fa633", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:390)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:390)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:390` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-f6a8cabf0466a94c", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:406)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:406)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:406` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-7f3982e08b41646d", "name": "Dangling fetch: PATCH /api/v1/email/drafts/missing-id (packages/core-api/src/__tests__/email-routes.test.ts:424)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/missing-id (packages/core-api/src/__tests__/email-routes.test.ts:424)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:424` calls `PATCH /api/v1/email/drafts/missing-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/missing-id`\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-af292eee348ee40e", "name": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:446)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:446)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/email-routes.test.ts:446` calls `PATCH /api/v1/email/drafts/draft-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/email/drafts/draft-uuid-1`\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-201cb800c342e877", "name": "Dangling fetch: GET /bets (packages/core-api/src/__tests__/helpers.ts:58)", "shortDescription": {"text": "Dangling fetch: GET /bets (packages/core-api/src/__tests__/helpers.ts:58)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/helpers.ts:58` calls `GET /bets` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/bets`\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-6faa75261024a27c", "name": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:291)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:291)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/pipeline.test.ts:291` calls `POST /api/v1/captures/cap-pipeline-1/retry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-pipeline-1/retry`\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-1410215db5664c20", "name": "Dangling fetch: POST /api/v1/captures/missing-id/retry (packages/core-api/src/__tests__/pipeline.test.ts:311)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/captures/missing-id/retry (packages/core-api/src/__tests__/pipeline.test.ts:311)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/pipeline.test.ts:311` calls `POST /api/v1/captures/missing-id/retry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/missing-id/retry`\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-c47a27084622f721", "name": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:326)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:326)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/pipeline.test.ts:326` calls `POST /api/v1/captures/cap-pipeline-1/retry` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-pipeline-1/retry`\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-a80a21b442a47c4c", "name": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry?stage=embed (packages/core-api/src/__tests__/pipeline.test.ts", "shortDescription": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry?stage=embed (packages/core-api/src/__tests__/pipeline.test.ts:342)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/pipeline.test.ts:342` calls `POST /api/v1/captures/cap-pipeline-1/retry?stage=embed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-pipeline-1/retry`\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-8a1c2eac5afe2517", "name": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:121)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:121)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:121` calls `GET /api/v1/admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels`\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-621661378e412c51", "name": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:133)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:133)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:133` calls `GET /api/v1/admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels`\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-b83851a3f6719b92", "name": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:142)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:142)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:142` calls `GET /api/v1/admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels`\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-15ff014bfc5e203f", "name": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:159)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:159` calls `POST /api/v1/admin/slack/channels/C001/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels/c001/archive`\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-33e927ad48e4e4a7", "name": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:175)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:175` calls `POST /api/v1/admin/slack/channels/C001/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels/c001/archive`\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-d90820fe1625edb1", "name": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:250)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:250)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:250` calls `GET /api/v1/admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels`\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-b5f81258b12c298e", "name": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:258)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/slack-channel-routes.test.ts:258` calls `POST /api/v1/admin/slack/channels/C001/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels/c001/archive`\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-791a1987e2a71198", "name": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111 (packages/core-api/src/__tests__/session-route", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111 (packages/core-api/src/__tests__/session-routes.test.ts:226)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:226` calls `GET /api/v1/sessions/11111111-1111-1111-1111-111111111111` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111`\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-42aee10eea797d99", "name": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111?include_transcript=false (packages/core-api/sr", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111?include_transcript=false (packages/core-api/src/__tests__/session-routes.test.ts:239)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:239` calls `GET /api/v1/sessions/11111111-1111-1111-1111-111111111111?include_transcript=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111`\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-c7926546fbbdc4d7", "name": "Dangling fetch: GET /api/v1/sessions/99999999-9999-9999-9999-999999999999 (packages/core-api/src/__tests__/session-route", "shortDescription": {"text": "Dangling fetch: GET /api/v1/sessions/99999999-9999-9999-9999-999999999999 (packages/core-api/src/__tests__/session-routes.test.ts:253)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:253` calls `GET /api/v1/sessions/99999999-9999-9999-9999-999999999999` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/99999999-9999-9999-9999-999999999999`\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-3a893d4bdcc44501", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:268)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:268` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/respond`\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-5a0731b380a8af4c", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:287)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:287` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/respond`\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-a5c73c2acf39c0ef", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:300)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:300` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/respond`\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-8a7c74808051e786", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:315)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:315` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/respond`\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-b0ef27a966314e2b", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:328)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:328` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/respond`\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-b81f59200292064a", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/pause (packages/core-api/src/__tests__/sessio", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/pause (packages/core-api/src/__tests__/session-routes.test.ts:347)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:347` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/pause` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/pause`\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-359fe0f6c1017648", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/resume (packages/core-api/src/__tests__/sessi", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/resume (packages/core-api/src/__tests__/session-routes.test.ts:367)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:367` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/resume` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/resume`\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-e164618dd46711dc", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/complete (packages/core-api/src/__tests__/ses", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/complete (packages/core-api/src/__tests__/session-routes.test.ts:387)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:387` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/complete`\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-75528a4674791f74", "name": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/abandon (packages/core-api/src/__tests__/sess", "shortDescription": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/abandon (packages/core-api/src/__tests__/session-routes.test.ts:408)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/session-routes.test.ts:408` calls `POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/abandon` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/sessions/11111111-1111-1111-1111-111111111111/abandon`\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-907917489fd09fac", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1 (packages/core-api/src/__tests__/entity-routes.test.ts:197)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1 (packages/core-api/src/__tests__/entity-routes.test.ts:197)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:197` calls `GET /api/v1/entities/entity-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1`\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-9f2987ec751b5066", "name": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid (packages/core-api/src/__tests__/entity-routes.test.ts:214)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid (packages/core-api/src/__tests__/entity-routes.test.ts:214)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:214` calls `GET /api/v1/entities/nonexistent-uuid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/nonexistent-uuid`\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-f363fddc8d2c8b1d", "name": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:229)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:229)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:229` calls `POST /api/v1/entities/source-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/source-id/merge`\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-eebb35f1f7a1d74f", "name": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:259)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:259)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:259` calls `POST /api/v1/entities/source-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/source-id/merge`\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-b674a40f2bdc1f58", "name": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:276)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:276)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:276` calls `POST /api/v1/entities/source-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/source-id/merge`\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-4a48bea24f4da5ad", "name": "Dangling fetch: POST /api/v1/entities/same-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:291)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/same-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:291)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:291` calls `POST /api/v1/entities/same-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/same-id/merge`\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-eaae72d2c9dd960f", "name": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:306)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:306)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:306` calls `POST /api/v1/entities/source-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/source-id/merge`\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-637604f5c68dc24f", "name": "Dangling fetch: POST /api/v1/entities/bad-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:322)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/bad-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:322)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:322` calls `POST /api/v1/entities/bad-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/bad-id/merge`\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-494905116aac5dc8", "name": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:338)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:338)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:338` calls `POST /api/v1/entities/source-id/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/source-id/merge`\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-83ee1f839d4b2a6f", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:357)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:357)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:357` calls `POST /api/v1/entities/entity-uuid-1/split` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/split`\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-83479089918c9b29", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:375)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:375)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:375` calls `POST /api/v1/entities/entity-uuid-1/split` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/split`\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-37c01265feb6748c", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:390)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:390)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:390` calls `POST /api/v1/entities/entity-uuid-1/split` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/split`\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-5e4169958948a819", "name": "Dangling fetch: POST /api/v1/entities/bad-id/split (packages/core-api/src/__tests__/entity-routes.test.ts:406)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/bad-id/split (packages/core-api/src/__tests__/entity-routes.test.ts:406)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:406` calls `POST /api/v1/entities/bad-id/split` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/bad-id/split`\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-2edce7fd04c82982", "name": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entit", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entity-routes.test.ts:425)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:425` calls `GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related`\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-12cc5e89ca191b9c", "name": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entit", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entity-routes.test.ts:442)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:442` calls `GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related`\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-1682a5866273968d", "name": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=50 (packages/core-api/src/__test", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=50 (packages/core-api/src/__tests__/entity-routes.test.ts:453)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:453` calls `GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=50` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related`\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-3d4e5d0576771f53", "name": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=999 (packages/core-api/src/__tes", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=999 (packages/core-api/src/__tests__/entity-routes.test.ts:456)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:456` calls `GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=999` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related`\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-4ba1a1f810d83811", "name": "Dangling fetch: GET /api/v1/entities/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/related (packages/core-api/src/__tests__/entit", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/related (packages/core-api/src/__tests__/entity-routes.test.ts:466)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:466` calls `GET /api/v1/entities/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/related` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/related`\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-c939b68378f6306d", "name": "Dangling fetch: GET /api/v1/entities/not-a-uuid/related (packages/core-api/src/__tests__/entity-routes.test.ts:478)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/not-a-uuid/related (packages/core-api/src/__tests__/entity-routes.test.ts:478)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:478` calls `GET /api/v1/entities/not-a-uuid/related` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/not-a-uuid/related`\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-a03ee20a664b2167", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:504)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:504` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-2f8992ca498c51f2", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=90d&bucket=month (packages/core-api/src/__te", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=90d&bucket=month (packages/core-api/src/__tests__/entity-routes.test.ts:521)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:521` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=90d&bucket=month` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-d992da4ea5f010f3", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=60d (packages/core-api/src/__tests__/entity-", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=60d (packages/core-api/src/__tests__/entity-routes.test.ts:534)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:534` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=60d` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-5a48692f5c464e96", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?bucket=hour (packages/core-api/src/__tests__/entity", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?bucket=hour (packages/core-api/src/__tests__/entity-routes.test.ts:545)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:545` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?bucket=hour` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-fad2ef5ac4d03faf", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=day (packages/core-api/src/__tes", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:556)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:556` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=day` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-ac17c1e9e83fbc94", "name": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.t", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:570)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:570` calls `GET /api/v1/entities/nonexistent-uuid/mentions-timeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/nonexistent-uuid/mentions-timeline`\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-ca9c350d0b50574a", "name": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.t", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:583)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:583` calls `GET /api/v1/entities/nonexistent-uuid/mentions-timeline` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/nonexistent-uuid/mentions-timeline`\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-93b3e5c8cc2062de", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:594)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:594` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-27fe8ca0ef26836e", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:609)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:609` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-eab059785318cf31", "name": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=week (packages/core-api/src/__te", "shortDescription": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=week (packages/core-api/src/__tests__/entity-routes.test.ts:620)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:620` calls `GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=week` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/mentions-timeline`\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-eee1f1f961e7429a", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:640)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:640)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:640` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-64b807dd78357e47", "name": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/ask (packages/core-api/src/__tests__/entity-routes.test.ts:670)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/ask (packages/core-api/src/__tests__/entity-routes.test.ts:670)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:670` calls `POST /api/v1/entities/nonexistent-uuid/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/nonexistent-uuid/ask`\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-5d1adfda8be34d36", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:688)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:688)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:688` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-f45982dac6f52f2b", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:705)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:705)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:705` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-1ac1e0dde637e986", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:721)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:721)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:721` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-d4ab44914debbc51", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:738)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:738)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:738` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-08e2e78f4a0cd29a", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:761)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:761)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:761` calls `POST /api/v1/entities/entity-uuid-1/ask` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/ask`\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-a0bbb54ac4ae455c", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:784)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:784)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:784` calls `POST /api/v1/entities/entity-uuid-1/brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/brief`\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-99ab831f9a36483a", "name": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/brief (packages/core-api/src/__tests__/entity-routes.test.ts:814)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/brief (packages/core-api/src/__tests__/entity-routes.test.ts:814)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:814` calls `POST /api/v1/entities/nonexistent-uuid/brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/nonexistent-uuid/brief`\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-04cfee753e78cf47", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:829)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:829)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:829` calls `POST /api/v1/entities/entity-uuid-1/brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/brief`\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-5e7d9a4c2343ba44", "name": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:843)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:843)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/entity-routes.test.ts:843` calls `POST /api/v1/entities/entity-uuid-1/brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/entity-uuid-1/brief`\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-477433f8b45160a7", "name": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:317)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:317` calls `POST /api/v1/intelligence/daily-connections/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/daily-connections/trigger`\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-d93d99330372cb1d", "name": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:332)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:332` calls `POST /api/v1/intelligence/drift-monitor/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/drift-monitor/trigger`\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-42711dfb6895d25c", "name": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:345)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:345` calls `POST /api/v1/intelligence/daily-connections/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/daily-connections/trigger`\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-df0330e43b76da05", "name": "Dangling fetch: POST /api/v1/intelligence/weekly-brief/trigger (packages/core-api/src/__tests__/intelligence-routes.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/weekly-brief/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:363)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:363` calls `POST /api/v1/intelligence/weekly-brief/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/weekly-brief/trigger`\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-70cd8177cd437aa4", "name": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:378)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:378` calls `POST /api/v1/intelligence/drift-monitor/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/drift-monitor/trigger`\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-5dd18af679a92dfe", "name": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:387)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/intelligence-routes.test.ts:387` calls `POST /api/v1/intelligence/daily-connections/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/intelligence/daily-connections/trigger`\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-49c1e055ddbd4ac9", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:222)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:222)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:222` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-8e7ea9ced060fce2", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:248)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:248)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:248` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-3a1a21b5db733034", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:265)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:265)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:265` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-d8fe4dcef12c1bf3", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:280)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:280)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:280` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-a81c33b1010b40cf", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:295)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:295)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:295` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-82e6d90fdea1af60", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:322)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:322)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:322` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-1f1def67b5cea0b5", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:342)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:342)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:342` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-ee973b1e87e2009e", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:355)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:355)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:355` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-9c341e4c5c46f4e3", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:376)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:376)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:376` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-eb6be0b3846b49e4", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:385)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:385)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:385` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-be54a2810ea9c6d5", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:393)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:393)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:393` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-ffd99d4e392a857d", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:413)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:413)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:413` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-03ddd3622aeaa11c", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:435)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:435)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:435` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-b5e328c5418b8e8a", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:442)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:442)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:442` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-98532daadd6b1a48", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:465)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:465)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:465` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-b5ba0e633d3b96f8", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:472)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:472)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:472` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-5c55b79e2391995b", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:507)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:507)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:507` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-b38ebb815c146561", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:514)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:514)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:514` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-8a9d2d16787bd363", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:541)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:541)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:541` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-c03458a2f3e8322f", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:548)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:548)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:548` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-45db7743467929a0", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:567)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:567)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:567` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-c1d508e583cfb0f6", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:577)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:577)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:577` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-1d27316c6dcb7f67", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:606)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:606)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:606` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-c02d1b98f45d91c0", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:618)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:618)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:618` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-077ca724ccfaae94", "name": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:652)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:652)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:652` calls `POST /api/v1/admin/config/reload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/config/reload`\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-a6926921150b2d94", "name": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:671)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:671)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:671` calls `POST /api/v1/admin/config/reload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/config/reload`\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-057c1644f6dd7bb9", "name": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:683)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:683)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:683` calls `POST /api/v1/admin/config/reload` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/config/reload`\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-d9201921514e85ea", "name": "Dangling fetch: GET /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:693)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:693)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:693` calls `GET /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-af6200979d0dc223", "name": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:701)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:701)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:701` calls `POST /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-cbad93937c627fec", "name": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:715)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:715)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:715` calls `POST /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-3a23cacc2832e55c", "name": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:727)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:727)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:727` calls `POST /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-4eee486312e1e70c", "name": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:740)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:740)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:740` calls `POST /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-aa95aa54ab95e86c", "name": "Dangling fetch: DELETE /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:752)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:752)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:752` calls `DELETE /api/v1/admin/banner` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/banner`\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-66ce3228c650d627", "name": "Dangling fetch: GET /api/v1/admin/queues (packages/core-api/src/__tests__/admin-routes.test.ts:764)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/queues (packages/core-api/src/__tests__/admin-routes.test.ts:764)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:764` calls `GET /api/v1/admin/queues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues`\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-03b61f89c47c3e2b", "name": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/core-api/src/__tests__/admin-routes.test.ts:775)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/core-api/src/__tests__/admin-routes.test.ts:775)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:775` calls `GET /api/v1/admin/pipeline/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/pipeline/health`\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-67a2be8d2b6fa7ad", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-routes.test.ts:7", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-routes.test.ts:783)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:783` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-03bc93661d14a776", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:791)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:791)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:791` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-22dee4c28ab49d9d", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:803)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:803)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:803` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-c6b35f2244236ba3", "name": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/admin-routes.test.ts:820)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/admin-routes.test.ts:820)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:820` calls `GET /api/v1/admin/slack/channels` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels`\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-c0d1cf06f68472d9", "name": "Dangling fetch: POST /api/v1/admin/slack/channels/C123/archive (packages/core-api/src/__tests__/admin-routes.test.ts:828", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C123/archive (packages/core-api/src/__tests__/admin-routes.test.ts:828)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-routes.test.ts:828` calls `POST /api/v1/admin/slack/channels/C123/archive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/slack/channels/c123/archive`\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-9c7b530f478426c8", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:150)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:150)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:150` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-c7d70ee04856244e", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:170)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:170)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:170` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-f864ad03fd66f6b8", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:190)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:190)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:190` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-0d0474c3694e4827", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:213)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:213)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:213` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-672f0f4b65622690", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:223)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:223)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:223` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-dddee35a9de4d757", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:231)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:231)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:231` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-9bc7f03539388347", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:243)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:243)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:243` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-35c2aeea330e1c3b", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:256)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:256)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:256` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-5c661a8783a58f47", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:277)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:277)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:277` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-387334bad9d2f89c", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:285)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:285)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:285` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-2b35a2e9937ffdf4", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:306)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:306)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:306` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-a5483b518ee361e8", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:333)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:333)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:333` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-d24b37959b72ae02", "name": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:341)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:341)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-reset-two-step.test.ts:341` calls `POST /api/v1/admin/reset-data` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/reset-data`\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-779dad3d13127771", "name": "Dangling fetch: GET /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:201)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:201)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:201` calls `GET /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-b4b5969af8353a86", "name": "Dangling fetch: GET /api/v1/bets/missing-id (packages/core-api/src/__tests__/bet-routes.test.ts:216)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/bets/missing-id (packages/core-api/src/__tests__/bet-routes.test.ts:216)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:216` calls `GET /api/v1/bets/missing-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/missing-id`\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-aa407fa18ee161d6", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:271)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:271)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:271` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-b76f005e3406bb3e", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:292)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:292)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:292` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-1308faf29738d368", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:311)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:311)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:311` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-83eb87996b4d17b5", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:324)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:324)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:324` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-139221f37af689b3", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:340)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:340)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:340` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-eba4d078b35ead31", "name": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:355)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:355)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:355` calls `PATCH /api/v1/bets/bet-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/bet-uuid-1`\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-ef24566784f61d46", "name": "Dangling fetch: PATCH /api/v1/bets/missing (packages/core-api/src/__tests__/bet-routes.test.ts:373)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/bets/missing (packages/core-api/src/__tests__/bet-routes.test.ts:373)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/bet-routes.test.ts:373` calls `PATCH /api/v1/bets/missing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/bets/missing`\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-8cec4a2e2210e8f5", "name": "Dangling fetch: GET /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:134)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:134)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:134` calls `GET /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-f33057ef17209ee9", "name": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:225", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:225)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:225` calls `PATCH /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-25d02d4934e17547", "name": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:242", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:242)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:242` calls `PATCH /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-9afe64bbbdf5e0e5", "name": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:257", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:257)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:257` calls `PATCH /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-a6dc58c94d47f3ed", "name": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:270", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:270)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:270` calls `PATCH /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-e540291c3067eb60", "name": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:283", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:283)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:283` calls `PATCH /api/v1/voice/sessions/vs-uuid-1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1`\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-2772c1cdb11f1249", "name": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:302)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:302` calls `POST /api/v1/voice/sessions/vs-uuid-1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1/complete`\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-4e43e8549748b2d0", "name": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:331)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:331` calls `POST /api/v1/voice/sessions/vs-uuid-1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1/complete`\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-94826d120f6ad13d", "name": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:352)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:352` calls `POST /api/v1/voice/sessions/vs-uuid-1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1/complete`\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-5d7bd97a366e7c4e", "name": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:365)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:365` calls `POST /api/v1/voice/sessions/vs-uuid-1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1/complete`\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-70339530890f0c5a", "name": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:378)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/voice-session-routes.test.ts:378` calls `POST /api/v1/voice/sessions/vs-uuid-1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/voice/sessions/vs-uuid-1/complete`\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-40d65fce32aa06a3", "name": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:17)", "shortDescription": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:17)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/error-handler.test.ts:17` calls `GET /test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-29cbbeb36adbafdc", "name": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:27)", "shortDescription": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:27)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/error-handler.test.ts:27` calls `GET /test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-f5a021931b9460a4", "name": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:37)", "shortDescription": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:37)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/error-handler.test.ts:37` calls `GET /test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-9b4fa78ec1618021", "name": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:47)", "shortDescription": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:47)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/error-handler.test.ts:47` calls `GET /test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-c32c326e6d1cfca4", "name": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:57)", "shortDescription": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:57)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/error-handler.test.ts:57` calls `GET /test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-afb969e8c1281507", "name": "Dangling fetch: GET /api/v1/ingest/uploads/00000000-0000-4000-8000-000000000000 (packages/core-api/src/__tests__/ingest-", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ingest/uploads/00000000-0000-4000-8000-000000000000 (packages/core-api/src/__tests__/ingest-routes.test.ts:412)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/ingest-routes.test.ts:412` calls `GET /api/v1/ingest/uploads/00000000-0000-4000-8000-000000000000` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/ingest/uploads/00000000-0000-4000-8000-000000000000`\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-bb4f91061a5800b2", "name": "Dangling fetch: GET /api/v1/ingest/uploads/not-a-uuid (packages/core-api/src/__tests__/ingest-routes.test.ts:426)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/ingest/uploads/not-a-uuid (packages/core-api/src/__tests__/ingest-routes.test.ts:426)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/ingest-routes.test.ts:426` calls `GET /api/v1/ingest/uploads/not-a-uuid` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/ingest/uploads/not-a-uuid`\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-fdd932883702afd4", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:69)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:69` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-9ddb2d0a55b1d2e7", "name": "Dangling fetch: POST /api/v1/admin/queues/notification/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/notification/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:82)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:82` calls `POST /api/v1/admin/queues/notification/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/notification/clear`\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-b13dd70e3f26a8e4", "name": "Dangling fetch: POST /api/v1/admin/queues/skill-execution/clear (packages/core-api/src/__tests__/admin-queue-clear.test.", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/skill-execution/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:94)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:94` calls `POST /api/v1/admin/queues/skill-execution/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/skill-execution/clear`\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-0238c543c9a1d31f", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:106)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:106` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-907428dcc9561bea", "name": "Dangling fetch: POST /api/v1/admin/queues/nonexistent-queue/clear (packages/core-api/src/__tests__/admin-queue-clear.tes", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/nonexistent-queue/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:116)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:116` calls `POST /api/v1/admin/queues/nonexistent-queue/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/nonexistent-queue/clear`\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-fe578c6ce68132ce", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:127)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:127` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-b8c0648e3fc113bb", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:140)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:140` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-210082a5e8c9aee2", "name": "Dangling fetch: POST /api/v1/admin/queues/daily-sweep/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:1", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/daily-sweep/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:153)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:153` calls `POST /api/v1/admin/queues/daily-sweep/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/daily-sweep/clear`\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-0c1a4688788edf79", "name": "Dangling fetch: POST /api/v1/admin/queues/${name}/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:172)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/${name}/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:172)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:172` calls `POST /api/v1/admin/queues/${name}/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/<p>/clear`\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-15a88af607509084", "name": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test", "shortDescription": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:193)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/admin-queue-clear.test.ts:193` calls `POST /api/v1/admin/queues/capture-pipeline/clear` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/queues/capture-pipeline/clear`\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-cdceb2b9fa56518f", "name": "Dangling fetch: GET /api/v1/wiki/pages/entities/k8s.md (packages/core-api/src/__tests__/wiki-routes.test.ts:103)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/k8s.md (packages/core-api/src/__tests__/wiki-routes.test.ts:103)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/wiki-routes.test.ts:103` calls `GET /api/v1/wiki/pages/entities/k8s.md` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/wiki/pages/entities/k8s.md`\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-7e860714bb292120", "name": "Dangling fetch: GET /api/v1/wiki/pages/entities/nonexistent.md (packages/core-api/src/__tests__/wiki-routes.test.ts:115)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/nonexistent.md (packages/core-api/src/__tests__/wiki-routes.test.ts:115)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/wiki-routes.test.ts:115` calls `GET /api/v1/wiki/pages/entities/nonexistent.md` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/wiki/pages/entities/nonexistent.md`\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-d5bd55e687499e9a", "name": "Dangling fetch: GET /api/v1/wiki/pages/entities/cloud/aws.md (packages/core-api/src/__tests__/wiki-routes.test.ts:126)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/cloud/aws.md (packages/core-api/src/__tests__/wiki-routes.test.ts:126)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/wiki-routes.test.ts:126` calls `GET /api/v1/wiki/pages/entities/cloud/aws.md` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/wiki/pages/entities/cloud/aws.md`\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-5ddd48be1407f2d9", "name": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:228)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:228)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:228` calls `POST /api/v1/skills/weekly-brief/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief/trigger`\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-a413090357e05fd1", "name": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:248)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:248)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:248` calls `POST /api/v1/skills/weekly-brief/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief/trigger`\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-bac719e30944450f", "name": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:272)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:272)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:272` calls `POST /api/v1/skills/pipeline-health/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/pipeline-health/trigger`\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-d2b84b7598e407bd", "name": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:287)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:287)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:287` calls `POST /api/v1/skills/pipeline-health/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/pipeline-health/trigger`\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-4463ffe27e3f7b71", "name": "Dangling fetch: POST /api/v1/skills/invalid_name!/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:305)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/invalid_name!/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:305)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:305` calls `POST /api/v1/skills/invalid_name!/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/invalid_name!/trigger`\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-1c5c8a16520f65a6", "name": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:316)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:316)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:316` calls `POST /api/v1/skills/weekly-brief/trigger` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief/trigger`\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-cf04a99d5dd5d944", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:357)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:357)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:357` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-fe3ac6b83330b733", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:376)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:376)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:376` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-d892ed67b4f8733a", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:393)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:393)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:393` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-17d53c179d7007db", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:412)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:412)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:412` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-b526059031411e1c", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:431)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:431)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:431` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-d9223640ab4a52c5", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:449)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:449)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:449` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-d352a4f170cf8043", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:466)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:466)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:466` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-7184bcea98ba7411", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:483)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:483)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:483` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-8d2391254c20aae4", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:498)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:498)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:498` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-72d21a12c16f7be5", "name": "Dangling fetch: PATCH /api/v1/skills/nonexistent-skill (packages/core-api/src/__tests__/skills-routes.test.ts:515)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/nonexistent-skill (packages/core-api/src/__tests__/skills-routes.test.ts:515)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:515` calls `PATCH /api/v1/skills/nonexistent-skill` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/nonexistent-skill`\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-9a3dcd287273a318", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:535)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:535)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:535` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-885d8ea44ae814ee", "name": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:552)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:552)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/skills-routes.test.ts:552` calls `PATCH /api/v1/skills/weekly-brief` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/skills/weekly-brief`\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-bc870f3bee3df4e8", "name": "Dangling fetch: GET /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:341)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:341)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:341` calls `GET /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-64e94b692e8b5ec8", "name": "Dangling fetch: GET /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:352)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:352)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:352` calls `GET /api/v1/captures/missing-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/missing-id`\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-fa32944247378c8d", "name": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:379)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:379)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:379` calls `PATCH /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-05e2b5e3923b4e73", "name": "Dangling fetch: PATCH /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:394)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:394)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:394` calls `PATCH /api/v1/captures/missing-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/missing-id`\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-68b87a459b660090", "name": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:407)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:407)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:407` calls `PATCH /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-e5bff3d624b1d94f", "name": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:423)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:423)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:423` calls `PATCH /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-76ecbebf3c2b5ea6", "name": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:437)", "shortDescription": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:437)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:437` calls `PATCH /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-e8d4955304a5af1a", "name": "Dangling fetch: DELETE /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:468)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:468)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:468` calls `DELETE /api/v1/captures/cap-abc-123` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/cap-abc-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-b885ac9bb884130e", "name": "Dangling fetch: DELETE /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:478)", "shortDescription": {"text": "Dangling fetch: DELETE /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:478)"}, "fullDescription": {"text": "`packages/core-api/src/__tests__/captures-routes.test.ts:478` calls `DELETE /api/v1/captures/missing-id` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/captures/missing-id`\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-78046963cf973656", "name": "Dangling fetch: POST /api/v1/entities/merge (packages/slack-bot/src/lib/core-api-client.ts:213)", "shortDescription": {"text": "Dangling fetch: POST /api/v1/entities/merge (packages/slack-bot/src/lib/core-api-client.ts:213)"}, "fullDescription": {"text": "`packages/slack-bot/src/lib/core-api-client.ts:213` calls `POST /api/v1/entities/merge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/entities/merge`\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-2291e1896dc349a9", "name": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/slack-bot/src/lib/core-api-client.ts:294)", "shortDescription": {"text": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/slack-bot/src/lib/core-api-client.ts:294)"}, "fullDescription": {"text": "`packages/slack-bot/src/lib/core-api-client.ts:294` calls `GET /api/v1/admin/pipeline/health` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/v1/admin/pipeline/health`\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-8e9187eb360f9a72", "name": "Dangling fetch: GET /api/unknown (packages/voice-capture/src/__tests__/server.test.ts:158)", "shortDescription": {"text": "Dangling fetch: GET /api/unknown (packages/voice-capture/src/__tests__/server.test.ts:158)"}, "fullDescription": {"text": "`packages/voice-capture/src/__tests__/server.test.ts:158` calls `GET /api/unknown` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/unknown`\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-76c93d747b11e539", "name": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:111)", "shortDescription": {"text": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:111)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:111` calls `GET /captures/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures/<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-3a51dc233c7e5a14", "name": "Dangling fetch: POST /captures (packages/mobile/src/lib/api-client.ts:114)", "shortDescription": {"text": "Dangling fetch: POST /captures (packages/mobile/src/lib/api-client.ts:114)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:114` calls `POST /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-6e1932979465fde1", "name": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:123)", "shortDescription": {"text": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:123)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:123` calls `GET /entities/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/entities/<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-63835c6c2df9858c", "name": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:135)", "shortDescription": {"text": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:135)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:135` calls `PATCH /briefs/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/briefs/<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-7f37cc66a0c814a6", "name": "Dangling fetch: GET /search${buildQueryString(params)} (packages/mobile/src/lib/api-client.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /search${buildQueryString(params)} (packages/mobile/src/lib/api-client.ts:141)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:141` calls `GET /search${buildQueryString(params)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/search/<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-68a57a90125cf73f", "name": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:150)", "shortDescription": {"text": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:150)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:150` calls `PATCH /commitments/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/commitments/<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-4833c0a67f186f41", "name": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/mobile/src/lib/api-client.ts:156)", "shortDescription": {"text": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/mobile/src/lib/api-client.ts:156)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:156` calls `GET /settings/${encodeURIComponent(key)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/settings/<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-15d9756fc05217a1", "name": "Dangling fetch: GET /stats (packages/mobile/src/lib/api-client.ts:162)", "shortDescription": {"text": "Dangling fetch: GET /stats (packages/mobile/src/lib/api-client.ts:162)"}, "fullDescription": {"text": "`packages/mobile/src/lib/api-client.ts:162` calls `GET /stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/stats`\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-2c9285eacd79cf68", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:84)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:84` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-38b915f49bc7a9e6", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:99)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:99)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:99` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-484dfc90efb46675", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:114)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:114)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:114` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-93370ac01ea8d95a", "name": "Dangling fetch: GET /entities (packages/mobile/__tests__/lib/api-client.test.ts:115)", "shortDescription": {"text": "Dangling fetch: GET /entities (packages/mobile/__tests__/lib/api-client.test.ts:115)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:115` calls `GET /entities` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/entities`\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-cbaf11dcb51fe3f7", "name": "Dangling fetch: GET /search?q=test (packages/mobile/__tests__/lib/api-client.test.ts:116)", "shortDescription": {"text": "Dangling fetch: GET /search?q=test (packages/mobile/__tests__/lib/api-client.test.ts:116)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:116` calls `GET /search?q=test` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\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-ceabfd3890823f3f", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:128)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:128)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:128` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-7980ebbe1b5bc283", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:133)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:133)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:133` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-556f32080557d674", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:143)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:143)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:143` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-87e1495bd2b17af8", "name": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:159)", "shortDescription": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:159)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:159` calls `GET /captures` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures`\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-84cf3fd81ca6f4a8", "name": "Dangling fetch: GET /captures/x (packages/mobile/__tests__/lib/api-client.test.ts:170)", "shortDescription": {"text": "Dangling fetch: GET /captures/x (packages/mobile/__tests__/lib/api-client.test.ts:170)"}, "fullDescription": {"text": "`packages/mobile/__tests__/lib/api-client.test.ts:170` calls `GET /captures/x` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/captures/x`\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-af4de720f651079e", "name": "Unused endpoint: POST /extract", "shortDescription": {"text": "Unused endpoint: POST /extract"}, "fullDescription": {"text": "`packages/file-ingestion/src/extract.py` declares `POST /extract` 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-1a6d91f2236825bf", "name": "Unused endpoint: ANY /", "shortDescription": {"text": "Unused endpoint: ANY /"}, "fullDescription": {"text": "`scripts/plaid-link-server.py` declares `ANY /` 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-ad3a09700e2eb8e5", "name": "Unused endpoint: ANY /api/create_link_token", "shortDescription": {"text": "Unused endpoint: ANY /api/create_link_token"}, "fullDescription": {"text": "`scripts/plaid-link-server.py` declares `ANY /api/create_link_token` 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-96d5abf38215b996", "name": "Unused endpoint: ANY /api/exchange_public_token", "shortDescription": {"text": "Unused endpoint: ANY /api/exchange_public_token"}, "fullDescription": {"text": "`scripts/plaid-link-server.py` declares `ANY /api/exchange_public_token` 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-82ad2cbf9edb3e8a", "name": "Unused endpoint: USE /api/v1/captures/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/captures/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/captures/*` 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-52b5c9dbba9e91e2", "name": "Unused endpoint: USE /api/v1/search", "shortDescription": {"text": "Unused endpoint: USE /api/v1/search"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/search` 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-040d017bebf7546f", "name": "Unused endpoint: USE /api/v1/synthesize", "shortDescription": {"text": "Unused endpoint: USE /api/v1/synthesize"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/synthesize` 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-b0ac6821ee660594", "name": "Unused endpoint: USE /api/v1/voice-captures", "shortDescription": {"text": "Unused endpoint: USE /api/v1/voice-captures"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/voice-captures` 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-4122dd19b0956a0d", "name": "Unused endpoint: USE /api/v1/briefs/*/refine", "shortDescription": {"text": "Unused endpoint: USE /api/v1/briefs/*/refine"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/briefs/*/refine` 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-c38ed2f4d29b5029", "name": "Unused endpoint: USE /api/v1/briefs/*/audio", "shortDescription": {"text": "Unused endpoint: USE /api/v1/briefs/*/audio"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/briefs/*/audio` 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-4d5fff34683bb72d", "name": "Unused endpoint: USE /api/v1/entities/*/ask", "shortDescription": {"text": "Unused endpoint: USE /api/v1/entities/*/ask"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/entities/*/ask` 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-4e18c77b60b6a519", "name": "Unused endpoint: USE /api/v1/entities/*/brief", "shortDescription": {"text": "Unused endpoint: USE /api/v1/entities/*/brief"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/entities/*/brief` 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-737464a5fefd2cf4", "name": "Unused endpoint: USE /api/v1/admin/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/admin/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/admin/*` 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-765b3181318378b8", "name": "Unused endpoint: USE /api/v1/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/*` 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-4b95eaeb9464a0d7", "name": "Unused endpoint: USE /api/v1/briefs/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/briefs/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/briefs/*` 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-428ba166a585ab58", "name": "Unused endpoint: USE /api/v1/commitments/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/commitments/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/commitments/*` 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-629543938b6bff58", "name": "Unused endpoint: USE /api/v1/settings/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/settings/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/settings/*` 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-f46385e616f5022a", "name": "Unused endpoint: USE /api/v1/stats/*", "shortDescription": {"text": "Unused endpoint: USE /api/v1/stats/*"}, "fullDescription": {"text": "`packages/core-api/src/app.ts` declares `USE /api/v1/stats/*` 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-efbc80312c5027b5", "name": "Unused endpoint: ALL /mcp", "shortDescription": {"text": "Unused endpoint: ALL /mcp"}, "fullDescription": {"text": "`packages/core-api/src/mcp/server.ts` declares `ALL /mcp` 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-15d53ea4f49143fd", "name": "Unused endpoint: USE /api/v1/captures", "shortDescription": {"text": "Unused endpoint: USE /api/v1/captures"}, "fullDescription": {"text": "`packages/core-api/src/middleware/mobile-auth.ts` declares `USE /api/v1/captures` 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-4720234eadac41f0", "name": "Unused endpoint: GET /api/v1/skills/:name/logs", "shortDescription": {"text": "Unused endpoint: GET /api/v1/skills/:name/logs"}, "fullDescription": {"text": "`packages/core-api/src/routes/skills.ts` declares `GET /api/v1/skills/:name/logs` 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-054e975f22cff1e3", "name": "Unused endpoint: PATCH /api/v1/skills/:name", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/skills/:name"}, "fullDescription": {"text": "`packages/core-api/src/routes/skills.ts` declares `PATCH /api/v1/skills/:name` 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-0930fcc8ba457931", "name": "Unused endpoint: PATCH /api/v1/email/drafts/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/email/drafts/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/email.ts` declares `PATCH /api/v1/email/drafts/: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-7ffa6c33519ec14b", "name": "Unused endpoint: POST /api/v1/intelligence/:skill/trigger", "shortDescription": {"text": "Unused endpoint: POST /api/v1/intelligence/:skill/trigger"}, "fullDescription": {"text": "`packages/core-api/src/routes/intelligence.ts` declares `POST /api/v1/intelligence/:skill/trigger` 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-e5da7b59329ded7b", "name": "Unused endpoint: GET /api/v1/intelligence/unresolved-questions", "shortDescription": {"text": "Unused endpoint: GET /api/v1/intelligence/unresolved-questions"}, "fullDescription": {"text": "`packages/core-api/src/routes/intelligence.ts` declares `GET /api/v1/intelligence/unresolved-questions` 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-c1a7a3b3dee17dcf", "name": "Unused endpoint: GET /api/v1/bets/:id", "shortDescription": {"text": "Unused endpoint: GET /api/v1/bets/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/bets.ts` declares `GET /api/v1/bets/: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-41532fd2ca553d88", "name": "Unused endpoint: DELETE /api/v1/bets/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/bets/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/bets.ts` declares `DELETE /api/v1/bets/: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-637b7d46c2ebbd96", "name": "Unused endpoint: GET /api/v1/voice/sessions/:id", "shortDescription": {"text": "Unused endpoint: GET /api/v1/voice/sessions/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/voice-sessions.ts` declares `GET /api/v1/voice/sessions/: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-d9916b32bbb9397a", "name": "Unused endpoint: PATCH /api/v1/voice/sessions/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/voice/sessions/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/voice-sessions.ts` declares `PATCH /api/v1/voice/sessions/: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-cc50b2c22cf87069", "name": "Unused endpoint: POST /api/v1/voice/sessions/:id/complete", "shortDescription": {"text": "Unused endpoint: POST /api/v1/voice/sessions/:id/complete"}, "fullDescription": {"text": "`packages/core-api/src/routes/voice-sessions.ts` declares `POST /api/v1/voice/sessions/:id/complete` 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-9d1cfab8f04e2a39", "name": "Unused endpoint: PATCH /api/v1/captures/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/captures/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/captures.ts` declares `PATCH /api/v1/captures/: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-4589a5eeb10eb7ea", "name": "Unused endpoint: DELETE /api/v1/captures/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/captures/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/captures.ts` declares `DELETE /api/v1/captures/: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-877d3546a842900f", "name": "Unused endpoint: GET /api/v1/entities/:id/commitments", "shortDescription": {"text": "Unused endpoint: GET /api/v1/entities/:id/commitments"}, "fullDescription": {"text": "`packages/core-api/src/routes/commitments.ts` declares `GET /api/v1/entities/:id/commitments` 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-fe3b2f1003d0a06c", "name": "Unused endpoint: PATCH /api/v1/commitments/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/commitments/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/commitments.ts` declares `PATCH /api/v1/commitments/: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-449db4c19b6ae24a", "name": "Unused endpoint: GET /api/v1/briefs", "shortDescription": {"text": "Unused endpoint: GET /api/v1/briefs"}, "fullDescription": {"text": "`packages/core-api/src/routes/briefs.ts` declares `GET /api/v1/briefs` 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-576529aeb7555d3a", "name": "Unused endpoint: GET /api/v1/briefs/:id", "shortDescription": {"text": "Unused endpoint: GET /api/v1/briefs/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/briefs.ts` declares `GET /api/v1/briefs/: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-e9fda08f217eab62", "name": "Unused endpoint: POST /api/v1/briefs/:id/refine", "shortDescription": {"text": "Unused endpoint: POST /api/v1/briefs/:id/refine"}, "fullDescription": {"text": "`packages/core-api/src/routes/briefs.ts` declares `POST /api/v1/briefs/:id/refine` 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-5aaa3b48dd0eb7db", "name": "Unused endpoint: POST /api/v1/briefs/:id/dismiss", "shortDescription": {"text": "Unused endpoint: POST /api/v1/briefs/:id/dismiss"}, "fullDescription": {"text": "`packages/core-api/src/routes/briefs.ts` declares `POST /api/v1/briefs/:id/dismiss` 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-5b4927c6d8132cbf", "name": "Unused endpoint: PATCH /api/v1/briefs/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/briefs/:id"}, "fullDescription": {"text": "`packages/core-api/src/routes/briefs.ts` declares `PATCH /api/v1/briefs/: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-a436691337284d03", "name": "Unused endpoint: GET /api/v1/health", "shortDescription": {"text": "Unused endpoint: GET /api/v1/health"}, "fullDescription": {"text": "`packages/core-api/src/routes/health.ts` declares `GET /api/v1/health` 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-c0ff71f3a481b5ee", "name": "Unused endpoint: GET /api/v1/config/ai-routing", "shortDescription": {"text": "Unused endpoint: GET /api/v1/config/ai-routing"}, "fullDescription": {"text": "`packages/core-api/src/routes/config.ts` declares `GET /api/v1/config/ai-routing` 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-12ef1785033dbcab", "name": "Unused endpoint: GET /api/v1/config/integrations", "shortDescription": {"text": "Unused endpoint: GET /api/v1/config/integrations"}, "fullDescription": {"text": "`packages/core-api/src/routes/config.ts` declares `GET /api/v1/config/integrations` 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-dc4b535cc23fe6e7", "name": "Unused endpoint: GET /api/v1/settings/:key", "shortDescription": {"text": "Unused endpoint: GET /api/v1/settings/:key"}, "fullDescription": {"text": "`packages/core-api/src/routes/settings.ts` declares `GET /api/v1/settings/:key` 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-4130b05a3f7fff68", "name": "Unused endpoint: PUT /api/v1/settings/:key", "shortDescription": {"text": "Unused endpoint: PUT /api/v1/settings/:key"}, "fullDescription": {"text": "`packages/core-api/src/routes/settings.ts` declares `PUT /api/v1/settings/:key` 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-3f637c9b3970a61e", "name": "Unused endpoint: GET /api/v1/entities/:id/related", "shortDescription": {"text": "Unused endpoint: GET /api/v1/entities/:id/related"}, "fullDescription": {"text": "`packages/core-api/src/routes/entities.ts` declares `GET /api/v1/entities/:id/related` 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-3322c08f7aa69f34", "name": "Unused endpoint: GET /api/v1/entities/:id/mentions-timeline", "shortDescription": {"text": "Unused endpoint: GET /api/v1/entities/:id/mentions-timeline"}, "fullDescription": {"text": "`packages/core-api/src/routes/entities.ts` declares `GET /api/v1/entities/:id/mentions-timeline` 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-80ff81d6a5b33db8", "name": "Unused endpoint: POST /api/v1/entities/:id/merge", "shortDescription": {"text": "Unused endpoint: POST /api/v1/entities/:id/merge"}, "fullDescription": {"text": "`packages/core-api/src/routes/entities.ts` declares `POST /api/v1/entities/:id/merge` 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-74c5bd94b878e135", "name": "Unused endpoint: POST /api/v1/entities/:id/ask", "shortDescription": {"text": "Unused endpoint: POST /api/v1/entities/:id/ask"}, "fullDescription": {"text": "`packages/core-api/src/routes/entities.ts` declares `POST /api/v1/entities/:id/ask` 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-64c935694c44e74d", "name": "Unused endpoint: POST /api/v1/entities/:id/brief", "shortDescription": {"text": "Unused endpoint: POST /api/v1/entities/:id/brief"}, "fullDescription": {"text": "`packages/core-api/src/routes/entities.ts` declares `POST /api/v1/entities/:id/brief` 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-5a6bb88f1f0d184d", "name": "Unused endpoint: GET /api/v1/insurance-policies", "shortDescription": {"text": "Unused endpoint: GET /api/v1/insurance-policies"}, "fullDescription": {"text": "`packages/core-api/src/routes/insurance-policies.ts` declares `GET /api/v1/insurance-policies` 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/25287"}, "properties": {"repository": "davistroy/open-brain", "repoUrl": "https://github.com/davistroy/open-brain", "branch": "main"}, "results": [{"ruleId": "scanner-ca4141b808eb4e2f", "level": "note", "message": {"text": "Possibly dead Python function: create_pipeline"}, "properties": {"repobilityId": "1c8a3d3c6b45c3e9", "scanner": "scanner-primary", "fingerprint": "ca4141b808eb4e2f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/voice-pipecat/src/pipeline.py:107"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72b3e0780dcbb313", "level": "note", "message": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "properties": {"repobilityId": "4c686f3e383194ff", "scanner": "scanner-primary", "fingerprint": "72b3e0780dcbb313", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/email-cleanup-pass4.py:169"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-080a216b6bcbbff1", "level": "note", "message": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "properties": {"repobilityId": "4c686f3e383194ff", "scanner": "scanner-primary", "fingerprint": "080a216b6bcbbff1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/email-cleanup-pass2.py:176"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-63a24574106ef231", "level": "note", "message": {"text": "Possibly dead Python function: collect_ids_for_sender"}, "properties": {"repobilityId": "4c686f3e383194ff", "scanner": "scanner-primary", "fingerprint": "63a24574106ef231", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/email-cleanup.py:217"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d73c4cbcbb5f07be", "level": "note", "message": {"text": "Possibly dead Python function: sort_key"}, "properties": {"repobilityId": "ac2a4181eae38738", "scanner": "scanner-primary", "fingerprint": "d73c4cbcbb5f07be", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lab-report-synthesis.py:311"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1017e716d04ac57c", "level": "note", "message": {"text": "Possibly dead Python function: route_for_source"}, "properties": {"repobilityId": "9292b1c3f1928cd1", "scanner": "scanner-primary", "fingerprint": "1017e716d04ac57c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/ingest_router.py:159"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e2b7265d416a6cf", "level": "note", "message": {"text": "Possibly dead Python function: resolve_command_args"}, "properties": {"repobilityId": "94c29ce5f1e87cf9", "scanner": "scanner-primary", "fingerprint": "9e2b7265d416a6cf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/ingest_router.py:259"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64a904708bb48dff", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "64a904708bb48dff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/ingest-sidecar/trigger_server.py:437"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab64b55615c8aa6d", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "ab64b55615c8aa6d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/ingest-sidecar/trigger_server.py:466"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-583278bc7d42a94e", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "583278bc7d42a94e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/ingest-sidecar/trigger_server.py:517"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5442e87466923c7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/workers/src/services/document-parser.ts:356"}, "properties": {"repobilityId": "751e7019291d9a91", "scanner": "scanner-primary", "fingerprint": "5442e87466923c7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6aed9143f6aa0fe", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/app/layout.tsx:35"}, "properties": {"repobilityId": "d67149b25d226a22", "scanner": "scanner-primary", "fingerprint": "f6aed9143f6aa0fe", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cdd066e41fa28a3b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/FileDropZone.tsx:347"}, "properties": {"repobilityId": "1ee351ef3c94c6d6", "scanner": "scanner-primary", "fingerprint": "cdd066e41fa28a3b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-07bc41d3e478b14f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionDetail.tsx:292"}, "properties": {"repobilityId": "51cd202eb9415ab3", "scanner": "scanner-primary", "fingerprint": "07bc41d3e478b14f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ae948fbb3c599eae", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/voice/SessionList.tsx:175"}, "properties": {"repobilityId": "71e7fafd3a89f1b4", "scanner": "scanner-primary", "fingerprint": "ae948fbb3c599eae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-26d7b617a01c1993", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/HoldingsTable.tsx:556"}, "properties": {"repobilityId": "b2bfa097b660a28a", "scanner": "scanner-primary", "fingerprint": "26d7b617a01c1993", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbdef5c348c99f40", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/investments/AllocationChart.tsx:393"}, "properties": {"repobilityId": "520085aeb897b953", "scanner": "scanner-primary", "fingerprint": "dbdef5c348c99f40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0e8d1b56526b5a29", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/RecentCaptures.tsx:98"}, "properties": {"repobilityId": "f815036749a14507", "scanner": "scanner-primary", "fingerprint": "0e8d1b56526b5a29", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4cb4c5cefece8bf2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/dashboard/UpcomingBriefs.tsx:28"}, "properties": {"repobilityId": "60be9c10bdb0aed5", "scanner": "scanner-primary", "fingerprint": "4cb4c5cefece8bf2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b02ea7e01bf5d512", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiNavTree.tsx:114"}, "properties": {"repobilityId": "4dcaab36537f7eae", "scanner": "scanner-primary", "fingerprint": "b02ea7e01bf5d512", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-728dd062e2b3011e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/wiki/WikiTabs.tsx:156"}, "properties": {"repobilityId": "d7f2b901ff52389e", "scanner": "scanner-primary", "fingerprint": "728dd062e2b3011e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a0945d41e9e22b7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/wiki/WikiTabs.tsx:7"}, "properties": {"repobilityId": "a7516f213ecdc9dd", "scanner": "scanner-primary", "fingerprint": "3a0945d41e9e22b7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fbd3b9abcb0f0df3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/web-next/components/briefs/BriefReader.tsx:13"}, "properties": {"repobilityId": "5cba5447545eb9cf", "scanner": "scanner-primary", "fingerprint": "fbd3b9abcb0f0df3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b45960c170c58043", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/IngestProgress.tsx:227"}, "properties": {"repobilityId": "e56a06915bf23f83", "scanner": "scanner-primary", "fingerprint": "b45960c170c58043", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-91cc60e8c97a67bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/ingest/FileDropZone.tsx:323"}, "properties": {"repobilityId": "30f2ece4f95c0e25", "scanner": "scanner-primary", "fingerprint": "91cc60e8c97a67bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3872a91791255a77", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/pwa/PwaInstallPrompt.tsx:108"}, "properties": {"repobilityId": "71e41281ebc504c4", "scanner": "scanner-primary", "fingerprint": "3872a91791255a77", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f4c9af893a6f8b26", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/GroupedResults.tsx:129"}, "properties": {"repobilityId": "7088d481eff36856", "scanner": "scanner-primary", "fingerprint": "f4c9af893a6f8b26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-654d70c06c708f69", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/search/EntityFacets.tsx:79"}, "properties": {"repobilityId": "69e752c1feba68cd", "scanner": "scanner-primary", "fingerprint": "654d70c06c708f69", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8c1e92dc62f43789", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/DraftCard.tsx:148"}, "properties": {"repobilityId": "25ddc00506cc324f", "scanner": "scanner-primary", "fingerprint": "8c1e92dc62f43789", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d02860d58d278ba6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/email/ThreadView.tsx:190"}, "properties": {"repobilityId": "80a6d5cfd50a8c4a", "scanner": "scanner-primary", "fingerprint": "d02860d58d278ba6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5158c7b1de03f20b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/entities/EntityRow.tsx:67"}, "properties": {"repobilityId": "fee9012629ee3bc5", "scanner": "scanner-primary", "fingerprint": "5158c7b1de03f20b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-525668028965e22f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/WikiSection.tsx:206"}, "properties": {"repobilityId": "26356321f0ef036b", "scanner": "scanner-primary", "fingerprint": "525668028965e22f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a4f79aeb5f95951a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/SourcesSection.tsx:88"}, "properties": {"repobilityId": "f94d65514c844047", "scanner": "scanner-primary", "fingerprint": "a4f79aeb5f95951a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20003a6eed792fcd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/ServiceHealthSection.tsx:125"}, "properties": {"repobilityId": "84b03d4a062125cb", "scanner": "scanner-primary", "fingerprint": "20003a6eed792fcd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24392d692ca7436b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailConfigSection.tsx:116"}, "properties": {"repobilityId": "7569fc5acf630334", "scanner": "scanner-primary", "fingerprint": "24392d692ca7436b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b53c610adc1e72b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/AIRoutingSection.tsx:84"}, "properties": {"repobilityId": "aa94253a3c976887", "scanner": "scanner-primary", "fingerprint": "b53c610adc1e72b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0af549cf1b10d8f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/EmailAllowlistSection.tsx:162"}, "properties": {"repobilityId": "05b5839fa499b15e", "scanner": "scanner-primary", "fingerprint": "0af549cf1b10d8f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5739b559a8fdcb6e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/settings/TriggersSection.tsx:134"}, "properties": {"repobilityId": "f3259f97cb6a5948", "scanner": "scanner-primary", "fingerprint": "5739b559a8fdcb6e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d9cba771fa89c4dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/SkillsTab.tsx:89"}, "properties": {"repobilityId": "cd627d553e279162", "scanner": "scanner-primary", "fingerprint": "d9cba771fa89c4dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7edf7698204a7603", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/OverviewTab.tsx:188"}, "properties": {"repobilityId": "987a9cdeda3566f5", "scanner": "scanner-primary", "fingerprint": "7edf7698204a7603", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a6495a32e26f47c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/McpActivityTab.tsx:93"}, "properties": {"repobilityId": "b3693eb511697316", "scanner": "scanner-primary", "fingerprint": "0a6495a32e26f47c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41c02e4a8780212e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/system/FlowsTab.tsx:79"}, "properties": {"repobilityId": "e753cdc7691d69d2", "scanner": "scanner-primary", "fingerprint": "41c02e4a8780212e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ddf74f10375e637d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/nav/side-nav.tsx:121"}, "properties": {"repobilityId": "d5943185928c5c5e", "scanner": "scanner-primary", "fingerprint": "ddf74f10375e637d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a3e033cc78cfa34a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/board/BoardCard.tsx:75"}, "properties": {"repobilityId": "13b515385ced2d57", "scanner": "scanner-primary", "fingerprint": "a3e033cc78cfa34a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ff917b04684513a8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/slack/ChannelTable.tsx:545"}, "properties": {"repobilityId": "cf9bb80672706fb2", "scanner": "scanner-primary", "fingerprint": "ff917b04684513a8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-90608a535adf435c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-next/components/mobile/VoiceFileMode.tsx:103"}, "properties": {"repobilityId": "3bc5fc49576b821c", "scanner": "scanner-primary", "fingerprint": "90608a535adf435c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-185d82c6c19d8cc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared/src/services/email/hotmail-client.ts:161"}, "properties": {"repobilityId": "1f44d766a9343716", "scanner": "scanner-primary", "fingerprint": "185d82c6c19d8cc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54cd0700a33f6055", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-briefs.ts:239"}, "properties": {"repobilityId": "f8b32d4db1cb75d2", "scanner": "scanner-primary", "fingerprint": "54cd0700a33f6055", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8700e540186ddf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-t0-classification.ts:466"}, "properties": {"repobilityId": "27f5534fb4fb615a", "scanner": "scanner-primary", "fingerprint": "f8700e540186ddf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-802fd0c11f9d42b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cloudflare/synthetic-monitor/src/index.ts:59"}, "properties": {"repobilityId": "dc2278e4a34ec928", "scanner": "scanner-primary", "fingerprint": "802fd0c11f9d42b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5859a95ad457f5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cloudflare/email-worker/src/index.ts:81"}, "properties": {"repobilityId": "b6002a0d91202e41", "scanner": "scanner-primary", "fingerprint": "e5859a95ad457f5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59221ef80490a30a", "level": "warning", "message": {"text": "Privileged port 587 in use"}, "properties": {"repobilityId": "a87a96c3b2e62c08", "scanner": "scanner-primary", "fingerprint": "59221ef80490a30a", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/email.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a88d3ffda29ceac", "level": "warning", "message": {"text": "Privileged port 465 in use"}, "properties": {"repobilityId": "bcd1f06b60a2b6bc", "scanner": "scanner-primary", "fingerprint": "7a88d3ffda29ceac", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/email.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6c66659d78daf22b", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "6c66659d78daf22b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/restore-rehearsal.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88a892714eeb0026", "level": "warning", "message": {"text": "Privileged port 45 in use"}, "properties": {"repobilityId": "73cf64d92574d41c", "scanner": "scanner-primary", "fingerprint": "88a892714eeb0026", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/offsite-backup.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d01349445cf7436d", "level": "warning", "message": {"text": "Privileged port 58 in use"}, "properties": {"repobilityId": "6d9ae83ac6aad676", "scanner": "scanner-primary", "fingerprint": "d01349445cf7436d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/email-categories.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "c19df8e9b1ce6e9d", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "6b3078e295594d31", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-234b5e1c963eaa3c", "level": "warning", "message": {"text": "Dockerfile runs as root: packages/web-next/Dockerfile"}, "properties": {"repobilityId": "8db937d2bebd04d4", "scanner": "scanner-primary", "fingerprint": "234b5e1c963eaa3c", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-945216b24fbaa527", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "b709c6ac8f33dacf", "scanner": "scanner-primary", "fingerprint": "945216b24fbaa527", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-next/Dockerfile"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-945216b24fbaa527", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "7ec6faa9beae799f", "scanner": "scanner-primary", "fingerprint": "945216b24fbaa527", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-next/Dockerfile"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-e49c9d29d4f27b78", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "4569192dd7bdf230", "scanner": "scanner-primary", "fingerprint": "e49c9d29d4f27b78", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/file-ingestion/Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-5888e76d53360828", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "86466d918fe46dd5", "scanner": "scanner-primary", "fingerprint": "5888e76d53360828", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/voice-pipecat/Dockerfile"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-a054d1b5e59cf88c", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/ingest-sidecar/Dockerfile"}, "properties": {"repobilityId": "5e30d626d3914ad3", "scanner": "scanner-primary", "fingerprint": "a054d1b5e59cf88c", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-fbb53579585aa527", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "ef5bae44ac04a72e", "scanner": "scanner-primary", "fingerprint": "fbb53579585aa527", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/ingest-sidecar/Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-b140e23dd19b1da7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02a-search-flat.html:101"}, "properties": {"repobilityId": "b9d1eed29f5cd184", "scanner": "scanner-primary", "fingerprint": "b140e23dd19b1da7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/handoff/open-brain-cloudscape-design-system/project/screens/02a-search-flat.html"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-92d7478ea60de935", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in reference/handoff/open-brain-cloudscape-design-system/project/screens/02b-search-grouped.html:78"}, "properties": {"repobilityId": "cb49077ff29a373d", "scanner": "scanner-primary", "fingerprint": "92d7478ea60de935", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/handoff/open-brain-cloudscape-design-system/project/screens/02b-search-grouped.html"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-8e759637f2585119", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in reference/handoff/open-brain-cloudscape-design-system/project/preview/spacing-scale.html:15"}, "properties": {"repobilityId": "8b415e2ac9132240", "scanner": "scanner-primary", "fingerprint": "8e759637f2585119", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/handoff/open-brain-cloudscape-design-system/project/preview/spacing-scale.html"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-2224c8998885a33a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/workers/src/skills/secret-rotation.ts:1"}, "properties": {"repobilityId": "a6c454f80e346d94", "scanner": "scanner-primary", "fingerprint": "2224c8998885a33a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/skills/secret-rotation.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5aa2908f81ce2186", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/workers/src/skills/storage-audit.ts:2"}, "properties": {"repobilityId": "0c1954a458257f11", "scanner": "scanner-primary", "fingerprint": "5aa2908f81ce2186", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/skills/storage-audit.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 634}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 672}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 687}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 700}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 715}}}]}, {"ruleId": "scanner-2a568db3a6038c37", "level": "error", "message": {"text": "Possible secret in packages/workers/src/__tests__/morning-brief.test.ts"}, "properties": {"repobilityId": "1747235ebfa3dcf4", "scanner": "scanner-primary", "fingerprint": "2a568db3a6038c37", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/src/__tests__/morning-brief.test.ts"}, "region": {"startLine": 729}}}]}, {"ruleId": "scanner-1e116a20791d4059", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in packages/web-next/app/layout.tsx:35"}, "properties": {"repobilityId": "06fa5f5b1c9df34e", "scanner": "scanner-primary", "fingerprint": "1e116a20791d4059", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-next/app/layout.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-47d43fcdc7ffd9dc", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-next/lib/export.ts:15"}, "properties": {"repobilityId": "b4eb07842944c77c", "scanner": "scanner-primary", "fingerprint": "47d43fcdc7ffd9dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-next/lib/export.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-a7c5c66dedacfcb2", "level": "error", "message": {"text": "Possible secret in packages/core-api/src/__tests__/config-routes.test.ts"}, "properties": {"repobilityId": "85d621a909043012", "scanner": "scanner-primary", "fingerprint": "a7c5c66dedacfcb2", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-api/src/__tests__/config-routes.test.ts"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-4bb041b46a2fd3e9", "level": "error", "message": {"text": "Possible secret in packages/core-api/src/__tests__/slack-channel-routes.test.ts"}, "properties": {"repobilityId": "d5dfa0b1cb31a84e", "scanner": "scanner-primary", "fingerprint": "4bb041b46a2fd3e9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-api/src/__tests__/slack-channel-routes.test.ts"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-611096a17e0e84e1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/services/himalaya.ts:1"}, "properties": {"repobilityId": "e7ef3acebedb6e6c", "scanner": "scanner-primary", "fingerprint": "611096a17e0e84e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/src/services/himalaya.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-47abfe1aad20c5c0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/plaid-link-server.py:216"}, "properties": {"repobilityId": "5e4ea14b2fb1c7e9", "scanner": "scanner-primary", "fingerprint": "47abfe1aad20c5c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/plaid-link-server.py"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-97098efaf4d58064", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-integration.mjs:10"}, "properties": {"repobilityId": "8ae00838b3560346", "scanner": "scanner-primary", "fingerprint": "97098efaf4d58064", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-integration.mjs"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-033105622a58760a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fdd354a798bfb28c", "scanner": "scanner-primary", "fingerprint": "033105622a58760a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-audit.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-033105622a58760a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3d51a8d812650035", "scanner": "scanner-primary", "fingerprint": "033105622a58760a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-audit.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-033105622a58760a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dec106356c950636", "scanner": "scanner-primary", "fingerprint": "033105622a58760a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-audit.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54597edb7f5bad38", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e768aa78741098d0", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a22664b58dca3181", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f57d208548fcef", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54597edb7f5bad38", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e768aa78741098d0", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a22664b58dca3181", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b7984a0d98960fe", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e768aa78741098d0", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4b177df429b39ab2", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a2e090dc0fe43f0", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bddd33f1f76558f2", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-3bc180d1d538d147", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "de08c46b0a2736f4", "scanner": "scanner-primary", "fingerprint": "3bc180d1d538d147", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-673fd08c667efadb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "30ccbe03d3acd7cd", "scanner": "scanner-primary", "fingerprint": "673fd08c667efadb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f6e55d292d76b01", "level": "note", "message": {"text": "Very large file: scripts/regression-test.mjs (1405 lines)"}, "properties": {"repobilityId": "1b2b8ebf132e12e8", "scanner": "scanner-primary", "fingerprint": "6f6e55d292d76b01", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7a2c7a9a928fd1f", "level": "note", "message": {"text": "Very large file: scripts/financial-pipeline.py (3442 lines)"}, "properties": {"repobilityId": "b4ff26da670a53e3", "scanner": "scanner-primary", "fingerprint": "c7a2c7a9a928fd1f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e9b363b2f6b18fc6", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/workers/package.json"}, "properties": {"repobilityId": "5d2fc0abaf67a430", "scanner": "scanner-primary", "fingerprint": "e9b363b2f6b18fc6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/workers/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9158349d87d073e7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/web-next/package.json"}, "properties": {"repobilityId": "f83be38b886c1474", "scanner": "scanner-primary", "fingerprint": "9158349d87d073e7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-next/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efbe038d74dc2cda", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core-api/package.json"}, "properties": {"repobilityId": "553e130c6be1eac0", "scanner": "scanner-primary", "fingerprint": "efbe038d74dc2cda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core-api/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2699d5f16ae11282", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared/package.json"}, "properties": {"repobilityId": "37ac218a4ef9b430", "scanner": "scanner-primary", "fingerprint": "2699d5f16ae11282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed5f81087ad81be9", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/slack-bot/package.json"}, "properties": {"repobilityId": "c7712a99e4303269", "scanner": "scanner-primary", "fingerprint": "ed5f81087ad81be9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/slack-bot/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2e0c6436a25147c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/voice-capture/package.json"}, "properties": {"repobilityId": "784fea1d2a3f02c6", "scanner": "scanner-primary", "fingerprint": "f2e0c6436a25147c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/voice-capture/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f87c913f9d130f8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/mobile/package.json"}, "properties": {"repobilityId": "913954574c9d28f4", "scanner": "scanner-primary", "fingerprint": "0f87c913f9d130f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mobile/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "2f9498f7083d8d38", "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": "af62eedbe3ef137f", "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": "3927b8f9eb618299", "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": "f201e08277e5e96b", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "79f91bf6fe67637d", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ec05103c33ada501", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: reference/handoff/open-brain-cloudscape-design-system/project/SKILL.md"}, "properties": {"repobilityId": "9d615117a7beafea", "scanner": "scanner-primary", "fingerprint": "ec05103c33ada501", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/handoff/open-brain-cloudscape-design-system/project/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d688be80f65f503c", "level": "none", "message": {"text": "Commented-code block (6 lines) in reference/handoff/open-brain-cloudscape-design-system/project/design-canvas.jsx:2"}, "properties": {"repobilityId": "b28255b8071dd4af", "scanner": "scanner-primary", "fingerprint": "d688be80f65f503c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a545b29b99ed400", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 reference/handoff/open-brain-cloudscape-design-system/project/design-canvas.jsx:63"}, "properties": {"repobilityId": "74f703c6946f809c", "scanner": "scanner-primary", "fingerprint": "2a545b29b99ed400", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-427de5ce5986ee02", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/main.ts:104"}, "properties": {"repobilityId": "ab727312bc81406e", "scanner": "scanner-primary", "fingerprint": "427de5ce5986ee02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8754264d7bc4e24", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/scheduler.ts:424"}, "properties": {"repobilityId": "904e177405070f9f", "scanner": "scanner-primary", "fingerprint": "e8754264d7bc4e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-923505cbfff44231", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/ingest-process.ts:18"}, "properties": {"repobilityId": "e0c13328627f2c0d", "scanner": "scanner-primary", "fingerprint": "923505cbfff44231", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-647a7499d3f1801b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/budget-check.ts:190"}, "properties": {"repobilityId": "26a6286669303091", "scanner": "scanner-primary", "fingerprint": "647a7499d3f1801b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a62f3359bfdd6206", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/jobs/ingestion-worker.ts:110"}, "properties": {"repobilityId": "90a42b07e991a2e1", "scanner": "scanner-primary", "fingerprint": "a62f3359bfdd6206", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e42605135dff85d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/lib/entity-resolver.ts:39"}, "properties": {"repobilityId": "656e51d8338c70ee", "scanner": "scanner-primary", "fingerprint": "e42605135dff85d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2816d9f5e6c4c1e", "level": "note", "message": {"text": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/skills/weekly-brief.ts:92"}, "properties": {"repobilityId": "7d3a82615f9cb1e8", "scanner": "scanner-primary", "fingerprint": "f2816d9f5e6c4c1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9013712f39614aeb", "level": "note", "message": {"text": "Legacy-named symbol `memory_consolidation_v1` in packages/workers/src/skills/memory-consolidation.ts:338"}, "properties": {"repobilityId": "8fb355ffeb7cc70c", "scanner": "scanner-primary", "fingerprint": "9013712f39614aeb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-21b7521fc70250f3", "level": "note", "message": {"text": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/skills/daily-sweep-skill.ts:156"}, "properties": {"repobilityId": "b457e9a77275388e", "scanner": "scanner-primary", "fingerprint": "21b7521fc70250f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e7448fedd4c0be98", "level": "note", "message": {"text": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/skills/drift-monitor.ts:154"}, "properties": {"repobilityId": "88fda96418a8fd77", "scanner": "scanner-primary", "fingerprint": "e7448fedd4c0be98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bb964bb6575af799", "level": "note", "message": {"text": "Legacy-named symbol `entity_brief_v1` in packages/workers/src/skills/entity-brief.ts:342"}, "properties": {"repobilityId": "b8af74da1c10a00f", "scanner": "scanner-primary", "fingerprint": "bb964bb6575af799", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ee4e99c3ae518ea6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/skills/pipeline-health-query.ts:6"}, "properties": {"repobilityId": "d6273f0edf6d4d20", "scanner": "scanner-primary", "fingerprint": "ee4e99c3ae518ea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dacb2fde656af2b6", "level": "note", "message": {"text": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/skills/daily-connections.ts:137"}, "properties": {"repobilityId": "478a269c23867c67", "scanner": "scanner-primary", "fingerprint": "dacb2fde656af2b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea2a56879fa4dd31", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/workers/src/skills/email-compose.ts:314"}, "properties": {"repobilityId": "da4a6ba5cbbe1128", "scanner": "scanner-primary", "fingerprint": "ea2a56879fa4dd31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fec08bc715ed16f8", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/workers/src/skills/refine-brief.ts:226"}, "properties": {"repobilityId": "4d4cc19b2fb60a88", "scanner": "scanner-primary", "fingerprint": "fec08bc715ed16f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc6af55d7274706e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/skills/morning-brief-query.ts:5"}, "properties": {"repobilityId": "488af715e8e76d29", "scanner": "scanner-primary", "fingerprint": "dc6af55d7274706e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae2fcbff9475477e", "level": "note", "message": {"text": "Legacy-named symbol `document_v2` in packages/workers/src/services/document-parser.ts:77"}, "properties": {"repobilityId": "80a7e9a965a8e9dc", "scanner": "scanner-primary", "fingerprint": "ae2fcbff9475477e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7740f9af8c3ca467", "level": "note", "message": {"text": "Legacy-named symbol `daily_sweep_v1` in packages/workers/src/__tests__/daily-sweep-skill.test.ts:556"}, "properties": {"repobilityId": "bccff0a105aa8c1d", "scanner": "scanner-primary", "fingerprint": "7740f9af8c3ca467", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2bab094d32c16fe3", "level": "note", "message": {"text": "Legacy-named symbol `drift_monitor_v1` in packages/workers/src/__tests__/drift-monitor.test.ts:800"}, "properties": {"repobilityId": "25b7e830c5ab8f21", "scanner": "scanner-primary", "fingerprint": "2bab094d32c16fe3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ce39b18d4f9a9699", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/workers/src/__tests__/email-classify.test.ts:346"}, "properties": {"repobilityId": "2308e0385cf15f32", "scanner": "scanner-primary", "fingerprint": "ce39b18d4f9a9699", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc7872aff55e8f80", "level": "note", "message": {"text": "Legacy-named symbol `daily_connections_v1` in packages/workers/src/__tests__/daily-connections.test.ts:573"}, "properties": {"repobilityId": "579b755bef7d0bb8", "scanner": "scanner-primary", "fingerprint": "cc7872aff55e8f80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2439e98ce991c37", "level": "note", "message": {"text": "Legacy-named symbol `weekly_brief_v1` in packages/workers/src/__tests__/weekly-brief.test.ts:330"}, "properties": {"repobilityId": "fb6fa1b65ee31ddc", "scanner": "scanner-primary", "fingerprint": "d2439e98ce991c37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8c6dc58b17fb69fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/workers/src/__tests__/email-compose.test.ts:352"}, "properties": {"repobilityId": "9efbd0cefba69e9a", "scanner": "scanner-primary", "fingerprint": "8c6dc58b17fb69fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9e15f80f7cf4b80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/workers/src/__tests__/integration/ingest-e2e.test.ts:176"}, "properties": {"repobilityId": "641587037472d630", "scanner": "scanner-primary", "fingerprint": "e9e15f80f7cf4b80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7464ff743d580c9e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-next/tests/smoke/quick-capture.spec.ts:48"}, "properties": {"repobilityId": "f9d54251c06ecd76", "scanner": "scanner-primary", "fingerprint": "7464ff743d580c9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ce421bad607886d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/settings/DangerZoneSection.tsx:102"}, "properties": {"repobilityId": "627102da12128e9e", "scanner": "scanner-primary", "fingerprint": "0ce421bad607886d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09c54ba32691423d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-next/components/onboarding/FirstBriefStep.tsx:6"}, "properties": {"repobilityId": "799a490ee23f6b2b", "scanner": "scanner-primary", "fingerprint": "09c54ba32691423d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db38b4c65ee3aab8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/components/system/AdminResetSection.tsx:91"}, "properties": {"repobilityId": "28eeea5f50c78d68", "scanner": "scanner-primary", "fingerprint": "db38b4c65ee3aab8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-716c8fe61d0f1b8f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-next/test/msw-handlers.ts:61"}, "properties": {"repobilityId": "cf7f1bca23b714ba", "scanner": "scanner-primary", "fingerprint": "716c8fe61d0f1b8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eecda6970e026bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-next/lib/api/config.ts:34"}, "properties": {"repobilityId": "e69a315a505d8d15", "scanner": "scanner-primary", "fingerprint": "0eecda6970e026bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8816a3d278d38a8b", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/web-next/lib/api/wiki.ts:17"}, "properties": {"repobilityId": "23319c171564ea96", "scanner": "scanner-primary", "fingerprint": "8816a3d278d38a8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-08f2798845fda88f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-next/lib/api/voice-captures.ts:23"}, "properties": {"repobilityId": "62add53ac0de16bf", "scanner": "scanner-primary", "fingerprint": "08f2798845fda88f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77f580e57d143bb2", "level": "note", "message": {"text": "Legacy-named symbol `admin_prewipe_backup` in packages/web-next/lib/api/admin.ts:129"}, "properties": {"repobilityId": "b50827178cb146ed", "scanner": "scanner-primary", "fingerprint": "77f580e57d143bb2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-82404dd9226ecffa", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-api/src/app.ts:126"}, "properties": {"repobilityId": "961dc97d0f402231", "scanner": "scanner-primary", "fingerprint": "82404dd9226ecffa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97f5cffd3e461152", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/schemas/capture.ts:5"}, "properties": {"repobilityId": "1a011fc97594ccba", "scanner": "scanner-primary", "fingerprint": "97f5cffd3e461152", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef1e7092d33a465f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/middleware/__tests__/mobile-auth.test.ts:76"}, "properties": {"repobilityId": "7c91c8763332b8d5", "scanner": "scanner-primary", "fingerprint": "ef1e7092d33a465f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecb6af22391bd614", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/services/sse.ts:1"}, "properties": {"repobilityId": "933308a5184fe33a", "scanner": "scanner-primary", "fingerprint": "ecb6af22391bd614", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b89d0551373957a", "level": "note", "message": {"text": "Legacy-named symbol `governance_v1` in packages/core-api/src/services/governance-engine.ts:100"}, "properties": {"repobilityId": "124e2e1eaf0f38bd", "scanner": "scanner-primary", "fingerprint": "6b89d0551373957a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-edb4ee41ad16bd08", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/services/admin.service.ts:177"}, "properties": {"repobilityId": "1ee4b9114d89befd", "scanner": "scanner-primary", "fingerprint": "edb4ee41ad16bd08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42823298013f1d2f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/services/bet.ts:211"}, "properties": {"repobilityId": "9e132032e0edf8d5", "scanner": "scanner-primary", "fingerprint": "42823298013f1d2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1a34c934eb6d627", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/mobile-auth-routing.test.ts:215"}, "properties": {"repobilityId": "b534192ce4bc28e3", "scanner": "scanner-primary", "fingerprint": "c1a34c934eb6d627", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48e178da6598670d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/commitment-routes.test.ts:42"}, "properties": {"repobilityId": "92091318ae8ac72d", "scanner": "scanner-primary", "fingerprint": "48e178da6598670d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-752b79fd8c393eef", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/events-routes.test.ts:27"}, "properties": {"repobilityId": "1784c92be97948e7", "scanner": "scanner-primary", "fingerprint": "752b79fd8c393eef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77653e7c682a5dba", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/mobile-rate-limit.test.ts:195"}, "properties": {"repobilityId": "365fd3913c998c06", "scanner": "scanner-primary", "fingerprint": "77653e7c682a5dba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6bb7667f0299f39", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/rate-limit.test.ts:314"}, "properties": {"repobilityId": "106265e91f803308", "scanner": "scanner-primary", "fingerprint": "b6bb7667f0299f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-066e6ba8359c5915", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/admin-service.test.ts:213"}, "properties": {"repobilityId": "0bc82c08bb97c5a1", "scanner": "scanner-primary", "fingerprint": "066e6ba8359c5915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b4a26aea6b63443", "level": "note", "message": {"text": "Legacy-named symbol `scoreOld` in packages/core-api/src/__tests__/search-service.test.ts:131"}, "properties": {"repobilityId": "7a4658ec6de8f3be", "scanner": "scanner-primary", "fingerprint": "0b4a26aea6b63443", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ca93a118430d63f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/__tests__/entity-resolution.test.ts:18"}, "properties": {"repobilityId": "a32be59e4ea2978a", "scanner": "scanner-primary", "fingerprint": "4ca93a118430d63f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cfb420086b2eb98", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core-api/src/__tests__/ingest-routes.test.ts:14"}, "properties": {"repobilityId": "a04084704393c4ec", "scanner": "scanner-primary", "fingerprint": "9cfb420086b2eb98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-133d96c793031eda", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/__tests__/email-draft-service.test.ts:31"}, "properties": {"repobilityId": "f17e93e87c57d750", "scanner": "scanner-primary", "fingerprint": "133d96c793031eda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e4be53cb0d4f0c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/mcp-tools.test.ts:536"}, "properties": {"repobilityId": "1102e4e70bc17bb1", "scanner": "scanner-primary", "fingerprint": "5e4be53cb0d4f0c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0db4f388494ef16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/voice-captures.test.ts:91"}, "properties": {"repobilityId": "7d0bb3fc05c4cb19", "scanner": "scanner-primary", "fingerprint": "b0db4f388494ef16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8cb12042ce3154ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/helpers.ts:333"}, "properties": {"repobilityId": "75acc389c0dc2712", "scanner": "scanner-primary", "fingerprint": "8cb12042ce3154ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eaa47ed2198c1d4a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-internal.test.ts:39"}, "properties": {"repobilityId": "b18c1339ec818d81", "scanner": "scanner-primary", "fingerprint": "eaa47ed2198c1d4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b751d848d796f0f4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-api/src/__tests__/integration/rate-limit-public.test.ts:82"}, "properties": {"repobilityId": "9e4cdba527e1af1d", "scanner": "scanner-primary", "fingerprint": "b751d848d796f0f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-321ca6e88496739f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core-api/src/__tests__/integration/rate-limit-public.test.ts:94"}, "properties": {"repobilityId": "82799104a459b7cf", "scanner": "scanner-primary", "fingerprint": "321ca6e88496739f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-795578bff40a9053", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/email.ts:160"}, "properties": {"repobilityId": "90cf8aa54b33cd1c", "scanner": "scanner-primary", "fingerprint": "795578bff40a9053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cd388fa0b830688", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core-api/src/routes/documents.ts:296"}, "properties": {"repobilityId": "19431e385de91ae0", "scanner": "scanner-primary", "fingerprint": "8cd388fa0b830688", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc73b867ddd762aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/intelligence.ts:159"}, "properties": {"repobilityId": "b79844f88e4b85de", "scanner": "scanner-primary", "fingerprint": "cc73b867ddd762aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b0c8f81d80e8653", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/bets.ts:20"}, "properties": {"repobilityId": "d8d2e0f75f2d24e4", "scanner": "scanner-primary", "fingerprint": "5b0c8f81d80e8653", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c1a0db3c1e25c5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/voice-sessions.ts:58"}, "properties": {"repobilityId": "c5911dee2dc5e432", "scanner": "scanner-primary", "fingerprint": "8c1a0db3c1e25c5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c9bdd6350d51084", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core-api/src/routes/commitments.ts:20"}, "properties": {"repobilityId": "774b8e819b54c7b9", "scanner": "scanner-primary", "fingerprint": "9c9bdd6350d51084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e838702700e9c9a", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core-api/src/routes/briefs.ts:169"}, "properties": {"repobilityId": "5d90925a5ee3cc0d", "scanner": "scanner-primary", "fingerprint": "4e838702700e9c9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e25328a16e761c6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core-api/src/routes/entities.ts:35"}, "properties": {"repobilityId": "563611f2329143cf", "scanner": "scanner-primary", "fingerprint": "7e25328a16e761c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8ce6663c5abccb4", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/ingest.ts:34"}, "properties": {"repobilityId": "f8bdbc91ddeb6c79", "scanner": "scanner-primary", "fingerprint": "a8ce6663c5abccb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff8792d5e4ce6f40", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core-api/src/routes/triggers.ts:24"}, "properties": {"repobilityId": "ac62ec87be7cc429", "scanner": "scanner-primary", "fingerprint": "ff8792d5e4ce6f40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-187e5934034bcc2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core-api/src/routes/admin.ts:62"}, "properties": {"repobilityId": "b6673ee234442d4b", "scanner": "scanner-primary", "fingerprint": "187e5934034bcc2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-732c9bfcb25e8018", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/types/commitment.ts:12"}, "properties": {"repobilityId": "886a072d3e6b1a6a", "scanner": "scanner-primary", "fingerprint": "732c9bfcb25e8018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3485176b157ce626", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/shared/src/types/brief.ts:3"}, "properties": {"repobilityId": "b80679555a511ac9", "scanner": "scanner-primary", "fingerprint": "3485176b157ce626", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24388121dafbfe05", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/schema/commitments.ts:13"}, "properties": {"repobilityId": "a170f6613fd4543d", "scanner": "scanner-primary", "fingerprint": "24388121dafbfe05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e44a9c47bb45645a", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/shared/src/schema/ingest.ts:6"}, "properties": {"repobilityId": "97fa14d04b6790f9", "scanner": "scanner-primary", "fingerprint": "e44a9c47bb45645a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9553e24cdbd34cff", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared/src/schema/supporting.ts:58"}, "properties": {"repobilityId": "fbf25d251e08ca68", "scanner": "scanner-primary", "fingerprint": "9553e24cdbd34cff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9772572dc4bfca0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/slack-messenger.ts:27"}, "properties": {"repobilityId": "3291411a5077f2e5", "scanner": "scanner-primary", "fingerprint": "9772572dc4bfca0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39f34ae577c7d93f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/shared/src/services/email/gmail-client.ts:5"}, "properties": {"repobilityId": "264e0271c807d592", "scanner": "scanner-primary", "fingerprint": "39f34ae577c7d93f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb786886b4766b53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/lib/core-api-client.ts:43"}, "properties": {"repobilityId": "d8efca4ad0303360", "scanner": "scanner-primary", "fingerprint": "cb786886b4766b53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4dff92f13d3f366b", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/slack-bot/src/handlers/auto-response.ts:320"}, "properties": {"repobilityId": "c1db56605c45077a", "scanner": "scanner-primary", "fingerprint": "4dff92f13d3f366b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-991ef444eb49bab6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/slack-bot/src/handlers/commands/email.ts:68"}, "properties": {"repobilityId": "05b421e19e5cd01d", "scanner": "scanner-primary", "fingerprint": "991ef444eb49bab6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4944e8dfb0e040dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/slack-bot/src/__tests__/capture-handler.test.ts:259"}, "properties": {"repobilityId": "5693299b010dbc34", "scanner": "scanner-primary", "fingerprint": "4944e8dfb0e040dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3940ba5a3f036b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/voice-capture/src/__tests__/server.test.ts:16"}, "properties": {"repobilityId": "a23d1cc0b355c927", "scanner": "scanner-primary", "fingerprint": "e3940ba5a3f036b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bf44ecfb98cbcba", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/mobile/src/lib/api-client.ts:34"}, "properties": {"repobilityId": "0ae677a31ad80c4e", "scanner": "scanner-primary", "fingerprint": "5bf44ecfb98cbcba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c71857f3cb7f073", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/mobile/__tests__/components/TabBar.test.tsx:4"}, "properties": {"repobilityId": "b4126a8873b32e14", "scanner": "scanner-primary", "fingerprint": "1c71857f3cb7f073", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eae3902d84e4155", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/regression-test.mjs:159"}, "properties": {"repobilityId": "b94bf023bf7e9fec", "scanner": "scanner-primary", "fingerprint": "0eae3902d84e4155", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2f0a51247d94a0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/regression-test.mjs:1190"}, "properties": {"repobilityId": "31633beca945b9c9", "scanner": "scanner-primary", "fingerprint": "b2f0a51247d94a0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfe83905cd33d659", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/financial-pipeline.py:1980"}, "properties": {"repobilityId": "a6589a5eaaaeb6ea", "scanner": "scanner-primary", "fingerprint": "cfe83905cd33d659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f09d983561fd3e71", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-repair.py:324"}, "properties": {"repobilityId": "a1a4cde4202614fc", "scanner": "scanner-primary", "fingerprint": "f09d983561fd3e71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58bbc9d48fa84fb0", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/insurance-gap-analysis.py:676"}, "properties": {"repobilityId": "4b2856cb6c8ead04", "scanner": "scanner-primary", "fingerprint": "58bbc9d48fa84fb0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73509910a493fd41", "level": "note", "message": {"text": "Legacy-named symbol `is_conflict_copy` in scripts/file-inventory.py:74"}, "properties": {"repobilityId": "8aade6ea1b8d11e5", "scanner": "scanner-primary", "fingerprint": "73509910a493fd41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c1d3abb9b97ade6", "level": "note", "message": {"text": "Legacy-named symbol `days_old` in scripts/dedup-and-archive.py:80"}, "properties": {"repobilityId": "85da7a3adcace8ea", "scanner": "scanner-primary", "fingerprint": "4c1d3abb9b97ade6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ac27dd2452b8651", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tests/test_lab_synthesis.py:158"}, "properties": {"repobilityId": "a65ebde8b5d98df7", "scanner": "scanner-primary", "fingerprint": "5ac27dd2452b8651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7c4b6d551746aad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/synthetic-monitor/src/index.ts:75"}, "properties": {"repobilityId": "46d932a5d6ad78d2", "scanner": "scanner-primary", "fingerprint": "c7c4b6d551746aad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df6cdf6a3e445225", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloudflare/email-worker/src/index.ts:176"}, "properties": {"repobilityId": "d7ff1354bdeaf972", "scanner": "scanner-primary", "fingerprint": "df6cdf6a3e445225", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-500e3b7d9fe8faf0", "level": "note", "message": {"text": "76 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "12aca37ef2a6fb6e", "scanner": "scanner-primary", "fingerprint": "500e3b7d9fe8faf0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9cc12ce7677ea52f", "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": "907570bd4e0f9d89", "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": "99595d59b228e7f5", "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": "073c34072989f4c2", "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": "d83d47f99d4cc036", "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": "8d9cf5c68aaea058", "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": "e89da967dcbebaab", "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": "88da0efd781d181e", "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": "fc8bda0b5bfe4e22", "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": "93c645f80236df8a", "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": "b939f5717fca1dce", "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": "ee1892d57000e216", "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": "709dc8097b815324", "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": "40dec4cf03520d56", "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": "d9149121e1ac53d8", "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": "a89e32cc3cc94516", "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": "4ed5b018adf78450", "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": "72e5fe7276ca64c6", "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": "eee2d45d9a1ed128", "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": "aeeb4e63b08f51ff", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-e7a7a535fbb04a67", "level": "error", "message": {"text": "FastAPI POST `extract` without auth dependency \u2014 packages/file-ingestion/src/extract.py:448"}, "properties": {"repobilityId": "755b1d4b26c20ccb", "scanner": "scanner-primary", "fingerprint": "e7a7a535fbb04a67", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/file-ingestion/src/extract.py"}, "region": {"startLine": 448}}}]}, {"ruleId": "scanner-88fd6033a0b8f568", "level": "error", "message": {"text": "Flask mutation route `create_link_token` without `@login_required` \u2014 scripts/plaid-link-server.py:317"}, "properties": {"repobilityId": "00e329a417008bd9", "scanner": "scanner-primary", "fingerprint": "88fd6033a0b8f568", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/plaid-link-server.py"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-8e73d2a7e242949d", "level": "error", "message": {"text": "Flask mutation route `exchange_public_token` without `@login_required` \u2014 scripts/plaid-link-server.py:341"}, "properties": {"repobilityId": "989ba95f31115feb", "scanner": "scanner-primary", "fingerprint": "8e73d2a7e242949d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/plaid-link-server.py"}, "region": {"startLine": 341}}}]}, {"ruleId": "scanner-a5c085eb72081c1d", "level": "error", "message": {"text": "Dangling fetch: POST https://slack.com/api/chat.postMessage (scripts/regression-test.mjs:93)"}, "properties": {"repobilityId": "7114cbef8cc4b8a7", "scanner": "scanner-primary", "fingerprint": "a5c085eb72081c1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b6ba081c3edcf360", "level": "error", "message": {"text": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-test.mjs:104)"}, "properties": {"repobilityId": "2e7e4a1d7b6c2eae", "scanner": "scanner-primary", "fingerprint": "b6ba081c3edcf360", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2b25050deb7c5da4", "level": "error", "message": {"text": "Dangling fetch: GET https://slack.com/api/conversations.history?channel=${SLACK_CHANNEL}&limit=50 (scripts/regression-test.mjs:1238)"}, "properties": {"repobilityId": "f59c884a54f2d579", "scanner": "scanner-primary", "fingerprint": "2b25050deb7c5da4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65598f4d6179a983", "level": "error", "message": {"text": "Dangling fetch: GET https://slack.com/api/conversations.replies?channel=${SLACK_CHANNEL}&ts=${ts} (scripts/regression-test.mjs:1246)"}, "properties": {"repobilityId": "b41fececf9b4100c", "scanner": "scanner-primary", "fingerprint": "65598f4d6179a983", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8b24644db4384428", "level": "error", "message": {"text": "Dangling fetch: POST /voice-api/upload (packages/web-next/components/voice/FileDropZone.tsx:106)"}, "properties": {"repobilityId": "77e332af55cfd51e", "scanner": "scanner-primary", "fingerprint": "8b24644db4384428", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e86cf29c7fdf791b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/settings/DangerZoneSection.tsx:102)"}, "properties": {"repobilityId": "43b5373439c58d30", "scanner": "scanner-primary", "fingerprint": "e86cf29c7fdf791b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c1638743727c519b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/web-next/components/system/AdminResetSection.tsx:91)"}, "properties": {"repobilityId": "5e7645477a0d0044", "scanner": "scanner-primary", "fingerprint": "c1638743727c519b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4452878d8a68d3a1", "level": "error", "message": {"text": "Dangling fetch: POST /skills/${encodeURIComponent(name)}/trigger (packages/web-next/lib/api/skills.ts:30)"}, "properties": {"repobilityId": "761de6be9cc5693f", "scanner": "scanner-primary", "fingerprint": "4452878d8a68d3a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc2d11c50a2a544b", "level": "error", "message": {"text": "Dangling fetch: GET /email/drafts/${encodeURIComponent(id)} (packages/web-next/lib/api/email.ts:83)"}, "properties": {"repobilityId": "e0304a8284db0b03", "scanner": "scanner-primary", "fingerprint": "dc2d11c50a2a544b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eb70ab48a606680f", "level": "error", "message": {"text": "Dangling fetch: GET /voice/sessions/active (packages/web-next/lib/api/voice.ts:61)"}, "properties": {"repobilityId": "aad839086612f1f7", "scanner": "scanner-primary", "fingerprint": "eb70ab48a606680f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-522dc399b716a77f", "level": "error", "message": {"text": "Dangling fetch: GET /voice/sessions/${encodeURIComponent(id)} (packages/web-next/lib/api/voice.ts:68)"}, "properties": {"repobilityId": "33424bb19c8461bf", "scanner": "scanner-primary", "fingerprint": "522dc399b716a77f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2150c6e421177987", "level": "error", "message": {"text": "Dangling fetch: GET /intelligence/summary (packages/web-next/lib/api/intelligence.ts:32)"}, "properties": {"repobilityId": "a7f2914bc41e4e66", "scanner": "scanner-primary", "fingerprint": "2150c6e421177987", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-572c4e1dbaa09cf7", "level": "error", "message": {"text": "Dangling fetch: GET /intelligence/connections/latest (packages/web-next/lib/api/intelligence.ts:37)"}, "properties": {"repobilityId": "e893aeded361629c", "scanner": "scanner-primary", "fingerprint": "572c4e1dbaa09cf7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-756903f73538b40e", "level": "error", "message": {"text": "Dangling fetch: GET /intelligence/drift/latest (packages/web-next/lib/api/intelligence.ts:42)"}, "properties": {"repobilityId": "61f6092975fbdf30", "scanner": "scanner-primary", "fingerprint": "756903f73538b40e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-518583dac25effe4", "level": "error", "message": {"text": "Dangling fetch: GET /system/health (packages/web-next/lib/api/system-health.ts:131)"}, "properties": {"repobilityId": "8d777d5baf982bd0", "scanner": "scanner-primary", "fingerprint": "518583dac25effe4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bfd5e29f6fd891e2", "level": "error", "message": {"text": "Dangling fetch: GET /system/flows${qs} (packages/web-next/lib/api/system-health.ts:137)"}, "properties": {"repobilityId": "aea0560927024ec6", "scanner": "scanner-primary", "fingerprint": "bfd5e29f6fd891e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dea6f62f98e9509f", "level": "error", "message": {"text": "Dangling fetch: GET /system/infrastructure (packages/web-next/lib/api/system-health.ts:142)"}, "properties": {"repobilityId": "b961cd62bc7c38bd", "scanner": "scanner-primary", "fingerprint": "dea6f62f98e9509f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9f8894b76f07d77c", "level": "error", "message": {"text": "Dangling fetch: GET /search${qs} (packages/web-next/lib/api/search.ts:42)"}, "properties": {"repobilityId": "065af4012ecfe7da", "scanner": "scanner-primary", "fingerprint": "9f8894b76f07d77c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f52859cadbc01d0a", "level": "error", "message": {"text": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/web-next/lib/api/captures.ts:42)"}, "properties": {"repobilityId": "161394756bb9768b", "scanner": "scanner-primary", "fingerprint": "f52859cadbc01d0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d604176fe870b98", "level": "error", "message": {"text": "Dangling fetch: POST /captures (packages/web-next/lib/api/captures.ts:47)"}, "properties": {"repobilityId": "55fa0cbc2bf967f8", "scanner": "scanner-primary", "fingerprint": "5d604176fe870b98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b23a00d056a52c28", "level": "error", "message": {"text": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/web-next/lib/api/commitments.ts:52)"}, "properties": {"repobilityId": "e65c93def02c9a40", "scanner": "scanner-primary", "fingerprint": "b23a00d056a52c28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d7a74f676e91a51a", "level": "error", "message": {"text": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/web-next/lib/api/briefs.ts:104)"}, "properties": {"repobilityId": "ec90680463faeeae", "scanner": "scanner-primary", "fingerprint": "d7a74f676e91a51a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3523521addfa538c", "level": "error", "message": {"text": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/dismiss (packages/web-next/lib/api/briefs.ts:112)"}, "properties": {"repobilityId": "f5dd5c586cbdc7c5", "scanner": "scanner-primary", "fingerprint": "3523521addfa538c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e86b39ee2734b30f", "level": "error", "message": {"text": "Dangling fetch: POST /briefs/${encodeURIComponent(id)}/refine (packages/web-next/lib/api/briefs.ts:119)"}, "properties": {"repobilityId": "56dbf50077d5977a", "scanner": "scanner-primary", "fingerprint": "e86b39ee2734b30f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a929c8103553aeb7", "level": "error", "message": {"text": "Dangling fetch: POST /synthesize (packages/web-next/lib/api/synthesize.ts:38)"}, "properties": {"repobilityId": "144845c0427d9f52", "scanner": "scanner-primary", "fingerprint": "a929c8103553aeb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6286c40e90de1cc5", "level": "error", "message": {"text": "Dangling fetch: GET /config/integrations (packages/web-next/lib/api/config.ts:27)"}, "properties": {"repobilityId": "5b852ccd31f1062c", "scanner": "scanner-primary", "fingerprint": "6286c40e90de1cc5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b84cd41793566442", "level": "error", "message": {"text": "Dangling fetch: GET /triggers (packages/web-next/lib/api/config.ts:55)"}, "properties": {"repobilityId": "4ecb625de92140d6", "scanner": "scanner-primary", "fingerprint": "b84cd41793566442", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-750916af52c2653b", "level": "error", "message": {"text": "Dangling fetch: POST /triggers (packages/web-next/lib/api/config.ts:64)"}, "properties": {"repobilityId": "00f59473cabda838", "scanner": "scanner-primary", "fingerprint": "750916af52c2653b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dd79fd091ca41783", "level": "error", "message": {"text": "Dangling fetch: GET /config/ai-routing (packages/web-next/lib/api/config.ts:91)"}, "properties": {"repobilityId": "31227d35080cf397", "scanner": "scanner-primary", "fingerprint": "dd79fd091ca41783", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f0db077181765067", "level": "error", "message": {"text": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:23)"}, "properties": {"repobilityId": "dde6f9a83a3c7104", "scanner": "scanner-primary", "fingerprint": "f0db077181765067", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-27950ce4a23f6cf2", "level": "error", "message": {"text": "Dangling fetch: PUT /settings/${encodeURIComponent(key)} (packages/web-next/lib/api/settings.ts:31)"}, "properties": {"repobilityId": "0a27545c1d71229c", "scanner": "scanner-primary", "fingerprint": "27950ce4a23f6cf2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-16640f16065460c4", "level": "error", "message": {"text": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/web-next/lib/api/entities.ts:43)"}, "properties": {"repobilityId": "d58aec9d031c1dd4", "scanner": "scanner-primary", "fingerprint": "16640f16065460c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ae1bb532e6537e11", "level": "error", "message": {"text": "Dangling fetch: POST /entities/${encodeURIComponent(sourceId)}/merge (packages/web-next/lib/api/entities.ts:54)"}, "properties": {"repobilityId": "01389c685d51c163", "scanner": "scanner-primary", "fingerprint": "ae1bb532e6537e11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-093250f73e1193d0", "level": "error", "message": {"text": "Dangling fetch: POST /entities/${encodeURIComponent(id)}/ask (packages/web-next/lib/api/entities.ts:91)"}, "properties": {"repobilityId": "c7a4396c9d4d6a42", "scanner": "scanner-primary", "fingerprint": "093250f73e1193d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-45f31d1dc8224485", "level": "error", "message": {"text": "Dangling fetch: GET /wiki/pages${qs} (packages/web-next/lib/api/wiki.ts:87)"}, "properties": {"repobilityId": "4a2e43fab19a20ca", "scanner": "scanner-primary", "fingerprint": "45f31d1dc8224485", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-93a7ec07cef4b6bd", "level": "error", "message": {"text": "Dangling fetch: GET /wiki/pages/${encodedPath} (packages/web-next/lib/api/wiki.ts:98)"}, "properties": {"repobilityId": "b3b1f2bfbc603504", "scanner": "scanner-primary", "fingerprint": "93a7ec07cef4b6bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2687cfc868f12b97", "level": "error", "message": {"text": "Dangling fetch: GET /wiki/recent-changes${qs} (packages/web-next/lib/api/wiki.ts:104)"}, "properties": {"repobilityId": "88e16dd302e093f2", "scanner": "scanner-primary", "fingerprint": "2687cfc868f12b97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c6bb31f79b530614", "level": "error", "message": {"text": "Dangling fetch: GET /wiki/lint-report (packages/web-next/lib/api/wiki.ts:109)"}, "properties": {"repobilityId": "d31608c07bd7346b", "scanner": "scanner-primary", "fingerprint": "c6bb31f79b530614", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-462579cdce0001a9", "level": "error", "message": {"text": "Dangling fetch: GET /wiki/stats (packages/web-next/lib/api/wiki.ts:114)"}, "properties": {"repobilityId": "bf031db0220c0371", "scanner": "scanner-primary", "fingerprint": "462579cdce0001a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-13895a2477252054", "level": "error", "message": {"text": "Dangling fetch: POST /wiki/lint (packages/web-next/lib/api/wiki.ts:127)"}, "properties": {"repobilityId": "85ab5e9c7b56fe6a", "scanner": "scanner-primary", "fingerprint": "13895a2477252054", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ff5156789751ac8", "level": "error", "message": {"text": "Dangling fetch: POST /wiki/resynthesize (packages/web-next/lib/api/wiki.ts:132)"}, "properties": {"repobilityId": "91105ae3b7af9981", "scanner": "scanner-primary", "fingerprint": "1ff5156789751ac8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-964ae40ebf09262a", "level": "error", "message": {"text": "Dangling fetch: GET /ingest/uploads${qs} (packages/web-next/lib/api/ingest.ts:134)"}, "properties": {"repobilityId": "649ea7f0d8705efc", "scanner": "scanner-primary", "fingerprint": "964ae40ebf09262a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cb78b325634df531", "level": "error", "message": {"text": "Dangling fetch: GET /ingest/uploads/${encodeURIComponent(id)} (packages/web-next/lib/api/ingest.ts:141)"}, "properties": {"repobilityId": "ef46e9b7cfe3bb37", "scanner": "scanner-primary", "fingerprint": "cb78b325634df531", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8fae65892096dd34", "level": "error", "message": {"text": "Dangling fetch: POST /ingest/uploads/${encodeURIComponent(id)}/process (packages/web-next/lib/api/ingest.ts:149)"}, "properties": {"repobilityId": "b835c82462180612", "scanner": "scanner-primary", "fingerprint": "8fae65892096dd34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3429a553369dfcc1", "level": "error", "message": {"text": "Dangling fetch: POST /ingest/process-now${qs} (packages/web-next/lib/api/ingest.ts:161)"}, "properties": {"repobilityId": "6a3e499a0874b563", "scanner": "scanner-primary", "fingerprint": "3429a553369dfcc1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ed47bca23174701a", "level": "error", "message": {"text": "Dangling fetch: POST /admin/queues/${encodeURIComponent(name)}/clear (packages/web-next/lib/api/admin.ts:34)"}, "properties": {"repobilityId": "6df4469ca95f2600", "scanner": "scanner-primary", "fingerprint": "ed47bca23174701a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc6e49c4945ac815", "level": "error", "message": {"text": "Dangling fetch: GET /admin/slack/channels (packages/web-next/lib/api/admin.ts:94)"}, "properties": {"repobilityId": "6ff1343b28b816ba", "scanner": "scanner-primary", "fingerprint": "dc6e49c4945ac815", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-91b0538bdc9170a7", "level": "error", "message": {"text": "Dangling fetch: POST /admin/slack/channels/${encodeURIComponent(id)}/archive (packages/web-next/lib/api/admin.ts:102)"}, "properties": {"repobilityId": "a3bb032057e8f847", "scanner": "scanner-primary", "fingerprint": "91b0538bdc9170a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e895d5c94551b118", "level": "error", "message": {"text": "Dangling fetch: POST /admin/reset-data (packages/web-next/lib/api/admin.ts:138)"}, "properties": {"repobilityId": "29f50c779609103f", "scanner": "scanner-primary", "fingerprint": "e895d5c94551b118", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d67f7312469dfd3b", "level": "error", "message": {"text": "Dangling fetch: GET /stats (packages/web-next/lib/api/stats.ts:34)"}, "properties": {"repobilityId": "073ff4cfa65ff1f9", "scanner": "scanner-primary", "fingerprint": "d67f7312469dfd3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a241160a3de5450", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/settings (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:204)"}, "properties": {"repobilityId": "506e651d6905fb3e", "scanner": "scanner-primary", "fingerprint": "8a241160a3de5450", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-204b139f6c4d1362", "level": "error", "message": {"text": "Dangling fetch: POST /mcp (packages/core-api/src/__tests__/mobile-auth-routing.test.ts:221)"}, "properties": {"repobilityId": "2d0c4b23e61dfaf9", "scanner": "scanner-primary", "fingerprint": "204b139f6c4d1362", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d590e8f9de3ed7d6", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments (packages/core-api/src/__tests__/commitment-routes.test.ts:193)"}, "properties": {"repobilityId": "b99a97daa43efa37", "scanner": "scanner-primary", "fingerprint": "d590e8f9de3ed7d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-630db8e7516d7290", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?include_resolved=true (packages/core-api/src/__tests__/commitment-routes.test.ts:209)"}, "properties": {"repobilityId": "9d5ff81ced491c28", "scanner": "scanner-primary", "fingerprint": "630db8e7516d7290", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1c9f6959693e9b02", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/commitments?limit=5&offset=10 (packages/core-api/src/__tests__/commitment-routes.test.ts:220)"}, "properties": {"repobilityId": "bf0d7338918500af", "scanner": "scanner-primary", "fingerprint": "1c9f6959693e9b02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-62f0effba5e164e5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:242)"}, "properties": {"repobilityId": "e9eb1a357919f2cf", "scanner": "scanner-primary", "fingerprint": "62f0effba5e164e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-43a81b65ce3eab54", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-2 (packages/core-api/src/__tests__/commitment-routes.test.ts:262)"}, "properties": {"repobilityId": "7621f4d7c409c887", "scanner": "scanner-primary", "fingerprint": "43a81b65ce3eab54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fadf8d73ee66c241", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/nonexistent-id (packages/core-api/src/__tests__/commitment-routes.test.ts:278)"}, "properties": {"repobilityId": "0d0775fcf8af18a1", "scanner": "scanner-primary", "fingerprint": "fadf8d73ee66c241", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a4fccf74e1ea15bc", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:293)"}, "properties": {"repobilityId": "5193c93dee8e906f", "scanner": "scanner-primary", "fingerprint": "a4fccf74e1ea15bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cde297191537dab1", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:308)"}, "properties": {"repobilityId": "96fe3523c45c52e9", "scanner": "scanner-primary", "fingerprint": "cde297191537dab1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26823487fb740c38", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/commitments/comm-uuid-1 (packages/core-api/src/__tests__/commitment-routes.test.ts:323)"}, "properties": {"repobilityId": "375834065959651d", "scanner": "scanner-primary", "fingerprint": "26823487fb740c38", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f4b4817556e1fadc", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:113)"}, "properties": {"repobilityId": "485d71bc06dee268", "scanner": "scanner-primary", "fingerprint": "f4b4817556e1fadc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0cc56de3513401a5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/email/drafts/draft-uuid-1/send (packages/core-api/src/__tests__/email-routes.test.ts:262)"}, "properties": {"repobilityId": "fd753519c1da5063", "scanner": "scanner-primary", "fingerprint": "0cc56de3513401a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dbad34df5b932226", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:283)"}, "properties": {"repobilityId": "b70b308e2d286ccc", "scanner": "scanner-primary", "fingerprint": "dbad34df5b932226", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6097d0f35aaf6773", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:305)"}, "properties": {"repobilityId": "d2c5334a0d030eb3", "scanner": "scanner-primary", "fingerprint": "6097d0f35aaf6773", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-057aade97cc59a71", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:328)"}, "properties": {"repobilityId": "3460de000e7f5716", "scanner": "scanner-primary", "fingerprint": "057aade97cc59a71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-61dec7ac89df7dc7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:353)"}, "properties": {"repobilityId": "5ab74412b71f88e2", "scanner": "scanner-primary", "fingerprint": "61dec7ac89df7dc7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e06295d63fb16c90", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:372)"}, "properties": {"repobilityId": "df4a08cb38523254", "scanner": "scanner-primary", "fingerprint": "e06295d63fb16c90", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-73bcce3b373fa633", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:390)"}, "properties": {"repobilityId": "880e49414ff858d7", "scanner": "scanner-primary", "fingerprint": "73bcce3b373fa633", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f6a8cabf0466a94c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:406)"}, "properties": {"repobilityId": "9f4a13e3ebc74a77", "scanner": "scanner-primary", "fingerprint": "f6a8cabf0466a94c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f3982e08b41646d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/missing-id (packages/core-api/src/__tests__/email-routes.test.ts:424)"}, "properties": {"repobilityId": "d0b60f39c6711a2e", "scanner": "scanner-primary", "fingerprint": "7f3982e08b41646d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-af292eee348ee40e", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/email/drafts/draft-uuid-1 (packages/core-api/src/__tests__/email-routes.test.ts:446)"}, "properties": {"repobilityId": "0444678c554838b6", "scanner": "scanner-primary", "fingerprint": "af292eee348ee40e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-201cb800c342e877", "level": "error", "message": {"text": "Dangling fetch: GET /bets (packages/core-api/src/__tests__/helpers.ts:58)"}, "properties": {"repobilityId": "48247aff3d979054", "scanner": "scanner-primary", "fingerprint": "201cb800c342e877", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6faa75261024a27c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:291)"}, "properties": {"repobilityId": "0f2a8316042410bb", "scanner": "scanner-primary", "fingerprint": "6faa75261024a27c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1410215db5664c20", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/captures/missing-id/retry (packages/core-api/src/__tests__/pipeline.test.ts:311)"}, "properties": {"repobilityId": "6152cd22d3d8801d", "scanner": "scanner-primary", "fingerprint": "1410215db5664c20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c47a27084622f721", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry (packages/core-api/src/__tests__/pipeline.test.ts:326)"}, "properties": {"repobilityId": "737611c1afd1d3b8", "scanner": "scanner-primary", "fingerprint": "c47a27084622f721", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a80a21b442a47c4c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/captures/cap-pipeline-1/retry?stage=embed (packages/core-api/src/__tests__/pipeline.test.ts:342)"}, "properties": {"repobilityId": "f6e2f17422dec276", "scanner": "scanner-primary", "fingerprint": "a80a21b442a47c4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a1c2eac5afe2517", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:121)"}, "properties": {"repobilityId": "886c5be2780a3bcb", "scanner": "scanner-primary", "fingerprint": "8a1c2eac5afe2517", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-621661378e412c51", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:133)"}, "properties": {"repobilityId": "20fd4be834401cc1", "scanner": "scanner-primary", "fingerprint": "621661378e412c51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b83851a3f6719b92", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:142)"}, "properties": {"repobilityId": "d08d7170d784c9af", "scanner": "scanner-primary", "fingerprint": "b83851a3f6719b92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-15ff014bfc5e203f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:159)"}, "properties": {"repobilityId": "39378699f1ff496a", "scanner": "scanner-primary", "fingerprint": "15ff014bfc5e203f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33e927ad48e4e4a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:175)"}, "properties": {"repobilityId": "ccbfd4b016e395d9", "scanner": "scanner-primary", "fingerprint": "33e927ad48e4e4a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d90820fe1625edb1", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/slack-channel-routes.test.ts:250)"}, "properties": {"repobilityId": "2b3ee62e98a8470c", "scanner": "scanner-primary", "fingerprint": "d90820fe1625edb1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b5f81258b12c298e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C001/archive (packages/core-api/src/__tests__/slack-channel-routes.test.ts:258)"}, "properties": {"repobilityId": "3e641684a1886d38", "scanner": "scanner-primary", "fingerprint": "b5f81258b12c298e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-791a1987e2a71198", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111 (packages/core-api/src/__tests__/session-routes.test.ts:226)"}, "properties": {"repobilityId": "b4c868132ad115f3", "scanner": "scanner-primary", "fingerprint": "791a1987e2a71198", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-42aee10eea797d99", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sessions/11111111-1111-1111-1111-111111111111?include_transcript=false (packages/core-api/src/__tests__/session-routes.test.ts:239)"}, "properties": {"repobilityId": "9bc688274735efba", "scanner": "scanner-primary", "fingerprint": "42aee10eea797d99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c7926546fbbdc4d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/sessions/99999999-9999-9999-9999-999999999999 (packages/core-api/src/__tests__/session-routes.test.ts:253)"}, "properties": {"repobilityId": "e3bed0d8b2c2a405", "scanner": "scanner-primary", "fingerprint": "c7926546fbbdc4d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a893d4bdcc44501", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:268)"}, "properties": {"repobilityId": "bda1325c2b72b7d0", "scanner": "scanner-primary", "fingerprint": "3a893d4bdcc44501", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a0731b380a8af4c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:287)"}, "properties": {"repobilityId": "4df0fbee3a734563", "scanner": "scanner-primary", "fingerprint": "5a0731b380a8af4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a5c73c2acf39c0ef", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:300)"}, "properties": {"repobilityId": "23817a5f4e4ef1ae", "scanner": "scanner-primary", "fingerprint": "a5c73c2acf39c0ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a7c74808051e786", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:315)"}, "properties": {"repobilityId": "0972b3662ddc47e2", "scanner": "scanner-primary", "fingerprint": "8a7c74808051e786", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b0ef27a966314e2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/respond (packages/core-api/src/__tests__/session-routes.test.ts:328)"}, "properties": {"repobilityId": "9b47c72101a8607d", "scanner": "scanner-primary", "fingerprint": "b0ef27a966314e2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b81f59200292064a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/pause (packages/core-api/src/__tests__/session-routes.test.ts:347)"}, "properties": {"repobilityId": "f5ea0d7fe701d317", "scanner": "scanner-primary", "fingerprint": "b81f59200292064a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-359fe0f6c1017648", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/resume (packages/core-api/src/__tests__/session-routes.test.ts:367)"}, "properties": {"repobilityId": "3874419af7f72ce5", "scanner": "scanner-primary", "fingerprint": "359fe0f6c1017648", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e164618dd46711dc", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/complete (packages/core-api/src/__tests__/session-routes.test.ts:387)"}, "properties": {"repobilityId": "7ac6756a70556dd7", "scanner": "scanner-primary", "fingerprint": "e164618dd46711dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75528a4674791f74", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/sessions/11111111-1111-1111-1111-111111111111/abandon (packages/core-api/src/__tests__/session-routes.test.ts:408)"}, "properties": {"repobilityId": "503416c95f3170d6", "scanner": "scanner-primary", "fingerprint": "75528a4674791f74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-907917489fd09fac", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1 (packages/core-api/src/__tests__/entity-routes.test.ts:197)"}, "properties": {"repobilityId": "bfe0456e41024635", "scanner": "scanner-primary", "fingerprint": "907917489fd09fac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9f2987ec751b5066", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid (packages/core-api/src/__tests__/entity-routes.test.ts:214)"}, "properties": {"repobilityId": "7c9631d0b645f8d9", "scanner": "scanner-primary", "fingerprint": "9f2987ec751b5066", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f363fddc8d2c8b1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:229)"}, "properties": {"repobilityId": "d158199a207028c2", "scanner": "scanner-primary", "fingerprint": "f363fddc8d2c8b1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eebb35f1f7a1d74f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:259)"}, "properties": {"repobilityId": "7f69d46ada0c4414", "scanner": "scanner-primary", "fingerprint": "eebb35f1f7a1d74f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b674a40f2bdc1f58", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:276)"}, "properties": {"repobilityId": "c91f8a58025201b1", "scanner": "scanner-primary", "fingerprint": "b674a40f2bdc1f58", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4a48bea24f4da5ad", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/same-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:291)"}, "properties": {"repobilityId": "23d2c3d35502eb47", "scanner": "scanner-primary", "fingerprint": "4a48bea24f4da5ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eaae72d2c9dd960f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:306)"}, "properties": {"repobilityId": "33bd74adc7ab36e9", "scanner": "scanner-primary", "fingerprint": "eaae72d2c9dd960f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-637604f5c68dc24f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/bad-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:322)"}, "properties": {"repobilityId": "b9ea0ebd148c6036", "scanner": "scanner-primary", "fingerprint": "637604f5c68dc24f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-494905116aac5dc8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/source-id/merge (packages/core-api/src/__tests__/entity-routes.test.ts:338)"}, "properties": {"repobilityId": "940750dc383a9b8b", "scanner": "scanner-primary", "fingerprint": "494905116aac5dc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83ee1f839d4b2a6f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:357)"}, "properties": {"repobilityId": "8f2667c649af3a3d", "scanner": "scanner-primary", "fingerprint": "83ee1f839d4b2a6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83479089918c9b29", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:375)"}, "properties": {"repobilityId": "33cc97c1c24ae113", "scanner": "scanner-primary", "fingerprint": "83479089918c9b29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37c01265feb6748c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/split (packages/core-api/src/__tests__/entity-routes.test.ts:390)"}, "properties": {"repobilityId": "61878ba99e00fe6a", "scanner": "scanner-primary", "fingerprint": "37c01265feb6748c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5e4169958948a819", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/bad-id/split (packages/core-api/src/__tests__/entity-routes.test.ts:406)"}, "properties": {"repobilityId": "d62630012e6f2fe6", "scanner": "scanner-primary", "fingerprint": "5e4169958948a819", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2edce7fd04c82982", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entity-routes.test.ts:425)"}, "properties": {"repobilityId": "9d2f40eaa1879de3", "scanner": "scanner-primary", "fingerprint": "2edce7fd04c82982", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-12cc5e89ca191b9c", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related (packages/core-api/src/__tests__/entity-routes.test.ts:442)"}, "properties": {"repobilityId": "86723a67467c63b9", "scanner": "scanner-primary", "fingerprint": "12cc5e89ca191b9c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1682a5866273968d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=50 (packages/core-api/src/__tests__/entity-routes.test.ts:453)"}, "properties": {"repobilityId": "e5f490e507040f82", "scanner": "scanner-primary", "fingerprint": "1682a5866273968d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3d4e5d0576771f53", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/related?limit=999 (packages/core-api/src/__tests__/entity-routes.test.ts:456)"}, "properties": {"repobilityId": "bc2debb44800ea0b", "scanner": "scanner-primary", "fingerprint": "3d4e5d0576771f53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4ba1a1f810d83811", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/related (packages/core-api/src/__tests__/entity-routes.test.ts:466)"}, "properties": {"repobilityId": "7c5d72820b11b6b8", "scanner": "scanner-primary", "fingerprint": "4ba1a1f810d83811", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c939b68378f6306d", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/not-a-uuid/related (packages/core-api/src/__tests__/entity-routes.test.ts:478)"}, "properties": {"repobilityId": "5fb4f2bff64cda45", "scanner": "scanner-primary", "fingerprint": "c939b68378f6306d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a03ee20a664b2167", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:504)"}, "properties": {"repobilityId": "3d5399257f83eef5", "scanner": "scanner-primary", "fingerprint": "a03ee20a664b2167", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2f8992ca498c51f2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=90d&bucket=month (packages/core-api/src/__tests__/entity-routes.test.ts:521)"}, "properties": {"repobilityId": "de62527cebd4421a", "scanner": "scanner-primary", "fingerprint": "2f8992ca498c51f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d992da4ea5f010f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=60d (packages/core-api/src/__tests__/entity-routes.test.ts:534)"}, "properties": {"repobilityId": "52b47b5e77ccbea0", "scanner": "scanner-primary", "fingerprint": "d992da4ea5f010f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a48692f5c464e96", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?bucket=hour (packages/core-api/src/__tests__/entity-routes.test.ts:545)"}, "properties": {"repobilityId": "897953a54b9136b2", "scanner": "scanner-primary", "fingerprint": "5a48692f5c464e96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fad2ef5ac4d03faf", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:556)"}, "properties": {"repobilityId": "264fb61ef013eeab", "scanner": "scanner-primary", "fingerprint": "fad2ef5ac4d03faf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ac17c1e9e83fbc94", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:570)"}, "properties": {"repobilityId": "0d27eafc3cfb34b7", "scanner": "scanner-primary", "fingerprint": "ac17c1e9e83fbc94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ca9c350d0b50574a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/nonexistent-uuid/mentions-timeline (packages/core-api/src/__tests__/entity-routes.test.ts:583)"}, "properties": {"repobilityId": "fcff237433fbcbe3", "scanner": "scanner-primary", "fingerprint": "ca9c350d0b50574a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-93b3e5c8cc2062de", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:594)"}, "properties": {"repobilityId": "0e6d754e6b9dace6", "scanner": "scanner-primary", "fingerprint": "93b3e5c8cc2062de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-27fe8ca0ef26836e", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=7d&bucket=day (packages/core-api/src/__tests__/entity-routes.test.ts:609)"}, "properties": {"repobilityId": "2e51e8c588e426ce", "scanner": "scanner-primary", "fingerprint": "27fe8ca0ef26836e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eab059785318cf31", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/entities/entity-uuid-1/mentions-timeline?window=365d&bucket=week (packages/core-api/src/__tests__/entity-routes.test.ts:620)"}, "properties": {"repobilityId": "6475faf01d80862e", "scanner": "scanner-primary", "fingerprint": "eab059785318cf31", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eee1f1f961e7429a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:640)"}, "properties": {"repobilityId": "201c4079339395bb", "scanner": "scanner-primary", "fingerprint": "eee1f1f961e7429a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-64b807dd78357e47", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/ask (packages/core-api/src/__tests__/entity-routes.test.ts:670)"}, "properties": {"repobilityId": "e907d52a29beb85d", "scanner": "scanner-primary", "fingerprint": "64b807dd78357e47", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d1adfda8be34d36", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:688)"}, "properties": {"repobilityId": "0d4dd880b1da1bf9", "scanner": "scanner-primary", "fingerprint": "5d1adfda8be34d36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f45982dac6f52f2b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:705)"}, "properties": {"repobilityId": "0df951784a964012", "scanner": "scanner-primary", "fingerprint": "f45982dac6f52f2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ac1e0dde637e986", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:721)"}, "properties": {"repobilityId": "1a1add76ae0a2d79", "scanner": "scanner-primary", "fingerprint": "1ac1e0dde637e986", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d4ab44914debbc51", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:738)"}, "properties": {"repobilityId": "1e1ba37e9ebfb6ef", "scanner": "scanner-primary", "fingerprint": "d4ab44914debbc51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-08e2e78f4a0cd29a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/ask (packages/core-api/src/__tests__/entity-routes.test.ts:761)"}, "properties": {"repobilityId": "1857d07f4feec8f4", "scanner": "scanner-primary", "fingerprint": "08e2e78f4a0cd29a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a0bbb54ac4ae455c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:784)"}, "properties": {"repobilityId": "780f16a8aa589632", "scanner": "scanner-primary", "fingerprint": "a0bbb54ac4ae455c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-99ab831f9a36483a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/nonexistent-uuid/brief (packages/core-api/src/__tests__/entity-routes.test.ts:814)"}, "properties": {"repobilityId": "d88a901cd5a28b94", "scanner": "scanner-primary", "fingerprint": "99ab831f9a36483a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-04cfee753e78cf47", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:829)"}, "properties": {"repobilityId": "357f55450d573ed5", "scanner": "scanner-primary", "fingerprint": "04cfee753e78cf47", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5e7d9a4c2343ba44", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/entity-uuid-1/brief (packages/core-api/src/__tests__/entity-routes.test.ts:843)"}, "properties": {"repobilityId": "c567978fafb9b884", "scanner": "scanner-primary", "fingerprint": "5e7d9a4c2343ba44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-477433f8b45160a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:317)"}, "properties": {"repobilityId": "b00d71ccec84ec45", "scanner": "scanner-primary", "fingerprint": "477433f8b45160a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d93d99330372cb1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:332)"}, "properties": {"repobilityId": "4f97bba7d1253bab", "scanner": "scanner-primary", "fingerprint": "d93d99330372cb1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-42711dfb6895d25c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:345)"}, "properties": {"repobilityId": "85624d8a711e51e1", "scanner": "scanner-primary", "fingerprint": "42711dfb6895d25c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-df0330e43b76da05", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/weekly-brief/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:363)"}, "properties": {"repobilityId": "cf58e83b0319dcef", "scanner": "scanner-primary", "fingerprint": "df0330e43b76da05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-70cd8177cd437aa4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/drift-monitor/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:378)"}, "properties": {"repobilityId": "fd2ed29add88158e", "scanner": "scanner-primary", "fingerprint": "70cd8177cd437aa4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5dd18af679a92dfe", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/intelligence/daily-connections/trigger (packages/core-api/src/__tests__/intelligence-routes.test.ts:387)"}, "properties": {"repobilityId": "5c6304a017340ac7", "scanner": "scanner-primary", "fingerprint": "5dd18af679a92dfe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-49c1e055ddbd4ac9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:222)"}, "properties": {"repobilityId": "62857faba14d477e", "scanner": "scanner-primary", "fingerprint": "49c1e055ddbd4ac9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8e7ea9ced060fce2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:248)"}, "properties": {"repobilityId": "f44551b2ee6d096d", "scanner": "scanner-primary", "fingerprint": "8e7ea9ced060fce2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a1a21b5db733034", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:265)"}, "properties": {"repobilityId": "c9e20ba6e57689f7", "scanner": "scanner-primary", "fingerprint": "3a1a21b5db733034", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d8fe4dcef12c1bf3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:280)"}, "properties": {"repobilityId": "786e4bb74692bbcd", "scanner": "scanner-primary", "fingerprint": "d8fe4dcef12c1bf3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a81c33b1010b40cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:295)"}, "properties": {"repobilityId": "0bcff5ede06cd372", "scanner": "scanner-primary", "fingerprint": "a81c33b1010b40cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-82e6d90fdea1af60", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:322)"}, "properties": {"repobilityId": "c24b69987fc6c978", "scanner": "scanner-primary", "fingerprint": "82e6d90fdea1af60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1f1def67b5cea0b5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:342)"}, "properties": {"repobilityId": "9097448355cd4826", "scanner": "scanner-primary", "fingerprint": "1f1def67b5cea0b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee973b1e87e2009e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:355)"}, "properties": {"repobilityId": "9c452c93915b2bf2", "scanner": "scanner-primary", "fingerprint": "ee973b1e87e2009e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c341e4c5c46f4e3", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:376)"}, "properties": {"repobilityId": "a9c62f17f06d686e", "scanner": "scanner-primary", "fingerprint": "9c341e4c5c46f4e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eb6be0b3846b49e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:385)"}, "properties": {"repobilityId": "8d2801ea8745a392", "scanner": "scanner-primary", "fingerprint": "eb6be0b3846b49e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-be54a2810ea9c6d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:393)"}, "properties": {"repobilityId": "ca4e31298e801290", "scanner": "scanner-primary", "fingerprint": "be54a2810ea9c6d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ffd99d4e392a857d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:413)"}, "properties": {"repobilityId": "e9a18c8b97f56973", "scanner": "scanner-primary", "fingerprint": "ffd99d4e392a857d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03ddd3622aeaa11c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:435)"}, "properties": {"repobilityId": "50e8de1584fffef0", "scanner": "scanner-primary", "fingerprint": "03ddd3622aeaa11c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b5e328c5418b8e8a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:442)"}, "properties": {"repobilityId": "076a2c534719e280", "scanner": "scanner-primary", "fingerprint": "b5e328c5418b8e8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-98532daadd6b1a48", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:465)"}, "properties": {"repobilityId": "f846f2fbdf713a2a", "scanner": "scanner-primary", "fingerprint": "98532daadd6b1a48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b5ba0e633d3b96f8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:472)"}, "properties": {"repobilityId": "8742305f7bd02900", "scanner": "scanner-primary", "fingerprint": "b5ba0e633d3b96f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5c55b79e2391995b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:507)"}, "properties": {"repobilityId": "6517d3480377d0ee", "scanner": "scanner-primary", "fingerprint": "5c55b79e2391995b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b38ebb815c146561", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:514)"}, "properties": {"repobilityId": "185f2e2fb636cb95", "scanner": "scanner-primary", "fingerprint": "b38ebb815c146561", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a9d2d16787bd363", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:541)"}, "properties": {"repobilityId": "5e41c4b41256fbc4", "scanner": "scanner-primary", "fingerprint": "8a9d2d16787bd363", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c03458a2f3e8322f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:548)"}, "properties": {"repobilityId": "6e2bc9dc0b73e185", "scanner": "scanner-primary", "fingerprint": "c03458a2f3e8322f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-45db7743467929a0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:567)"}, "properties": {"repobilityId": "a56b7796ff0ab06b", "scanner": "scanner-primary", "fingerprint": "45db7743467929a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c1d508e583cfb0f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:577)"}, "properties": {"repobilityId": "8b0399d96de6f0d3", "scanner": "scanner-primary", "fingerprint": "c1d508e583cfb0f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1d27316c6dcb7f67", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:606)"}, "properties": {"repobilityId": "036493f4e9f6dce5", "scanner": "scanner-primary", "fingerprint": "1d27316c6dcb7f67", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c02d1b98f45d91c0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:618)"}, "properties": {"repobilityId": "282016557293c7ab", "scanner": "scanner-primary", "fingerprint": "c02d1b98f45d91c0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-077ca724ccfaae94", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:652)"}, "properties": {"repobilityId": "f31dbf544361b662", "scanner": "scanner-primary", "fingerprint": "077ca724ccfaae94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6926921150b2d94", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:671)"}, "properties": {"repobilityId": "c93c020bcf7236eb", "scanner": "scanner-primary", "fingerprint": "a6926921150b2d94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-057c1644f6dd7bb9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/config/reload (packages/core-api/src/__tests__/admin-routes.test.ts:683)"}, "properties": {"repobilityId": "6cf42a40cabb558b", "scanner": "scanner-primary", "fingerprint": "057c1644f6dd7bb9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d9201921514e85ea", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:693)"}, "properties": {"repobilityId": "731d67892ab4676e", "scanner": "scanner-primary", "fingerprint": "d9201921514e85ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-af6200979d0dc223", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:701)"}, "properties": {"repobilityId": "0deded823e1563a2", "scanner": "scanner-primary", "fingerprint": "af6200979d0dc223", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cbad93937c627fec", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:715)"}, "properties": {"repobilityId": "b307090a5d5dd6b6", "scanner": "scanner-primary", "fingerprint": "cbad93937c627fec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a23cacc2832e55c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:727)"}, "properties": {"repobilityId": "274ccca49200dba6", "scanner": "scanner-primary", "fingerprint": "3a23cacc2832e55c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4eee486312e1e70c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:740)"}, "properties": {"repobilityId": "7f5008f25cb81c8e", "scanner": "scanner-primary", "fingerprint": "4eee486312e1e70c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa95aa54ab95e86c", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/admin/banner (packages/core-api/src/__tests__/admin-routes.test.ts:752)"}, "properties": {"repobilityId": "9e1b0e5ffca737c2", "scanner": "scanner-primary", "fingerprint": "aa95aa54ab95e86c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-66ce3228c650d627", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/queues (packages/core-api/src/__tests__/admin-routes.test.ts:764)"}, "properties": {"repobilityId": "8233082aa4b469f8", "scanner": "scanner-primary", "fingerprint": "66ce3228c650d627", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03b61f89c47c3e2b", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/core-api/src/__tests__/admin-routes.test.ts:775)"}, "properties": {"repobilityId": "a8a3578217dea5b2", "scanner": "scanner-primary", "fingerprint": "03b61f89c47c3e2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-67a2be8d2b6fa7ad", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-routes.test.ts:783)"}, "properties": {"repobilityId": "2c3348e45ce7d2dd", "scanner": "scanner-primary", "fingerprint": "67a2be8d2b6fa7ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03bc93661d14a776", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:791)"}, "properties": {"repobilityId": "58bff644344a0de6", "scanner": "scanner-primary", "fingerprint": "03bc93661d14a776", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-22dee4c28ab49d9d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-routes.test.ts:803)"}, "properties": {"repobilityId": "3a1215911437c935", "scanner": "scanner-primary", "fingerprint": "22dee4c28ab49d9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c6b35f2244236ba3", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/slack/channels (packages/core-api/src/__tests__/admin-routes.test.ts:820)"}, "properties": {"repobilityId": "c2ebf3a3160f2ae7", "scanner": "scanner-primary", "fingerprint": "c6b35f2244236ba3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c0d1cf06f68472d9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/slack/channels/C123/archive (packages/core-api/src/__tests__/admin-routes.test.ts:828)"}, "properties": {"repobilityId": "d9b515fcce145071", "scanner": "scanner-primary", "fingerprint": "c0d1cf06f68472d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c7b530f478426c8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:150)"}, "properties": {"repobilityId": "b9662a9c5667cdcb", "scanner": "scanner-primary", "fingerprint": "9c7b530f478426c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c7d70ee04856244e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:170)"}, "properties": {"repobilityId": "87ced19e38cb07d3", "scanner": "scanner-primary", "fingerprint": "c7d70ee04856244e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f864ad03fd66f6b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:190)"}, "properties": {"repobilityId": "d106d613eec904fa", "scanner": "scanner-primary", "fingerprint": "f864ad03fd66f6b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0d0474c3694e4827", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:213)"}, "properties": {"repobilityId": "5a4808139c25c92a", "scanner": "scanner-primary", "fingerprint": "0d0474c3694e4827", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-672f0f4b65622690", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:223)"}, "properties": {"repobilityId": "b6721aebd2e6b41f", "scanner": "scanner-primary", "fingerprint": "672f0f4b65622690", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dddee35a9de4d757", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:231)"}, "properties": {"repobilityId": "35413bd40a82305b", "scanner": "scanner-primary", "fingerprint": "dddee35a9de4d757", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9bc7f03539388347", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:243)"}, "properties": {"repobilityId": "ea2bbd2bedf76baa", "scanner": "scanner-primary", "fingerprint": "9bc7f03539388347", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-35c2aeea330e1c3b", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:256)"}, "properties": {"repobilityId": "de9a40d46f137fd0", "scanner": "scanner-primary", "fingerprint": "35c2aeea330e1c3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5c661a8783a58f47", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:277)"}, "properties": {"repobilityId": "17fd56ba57254db2", "scanner": "scanner-primary", "fingerprint": "5c661a8783a58f47", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-387334bad9d2f89c", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:285)"}, "properties": {"repobilityId": "40da862e910a96d2", "scanner": "scanner-primary", "fingerprint": "387334bad9d2f89c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b35a2e9937ffdf4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:306)"}, "properties": {"repobilityId": "5cb4d2a84cea3957", "scanner": "scanner-primary", "fingerprint": "2b35a2e9937ffdf4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a5483b518ee361e8", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:333)"}, "properties": {"repobilityId": "55d446b4f8d86139", "scanner": "scanner-primary", "fingerprint": "a5483b518ee361e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d24b37959b72ae02", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/reset-data (packages/core-api/src/__tests__/admin-reset-two-step.test.ts:341)"}, "properties": {"repobilityId": "1e44bd48d066fa32", "scanner": "scanner-primary", "fingerprint": "d24b37959b72ae02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-779dad3d13127771", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:201)"}, "properties": {"repobilityId": "a7b1704cd2528620", "scanner": "scanner-primary", "fingerprint": "779dad3d13127771", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b4b5969af8353a86", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/bets/missing-id (packages/core-api/src/__tests__/bet-routes.test.ts:216)"}, "properties": {"repobilityId": "4c02ac18442f2bbd", "scanner": "scanner-primary", "fingerprint": "b4b5969af8353a86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa407fa18ee161d6", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:271)"}, "properties": {"repobilityId": "bd8f00b6dd620c6c", "scanner": "scanner-primary", "fingerprint": "aa407fa18ee161d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b76f005e3406bb3e", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:292)"}, "properties": {"repobilityId": "6ff94f3314ba7b98", "scanner": "scanner-primary", "fingerprint": "b76f005e3406bb3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1308faf29738d368", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:311)"}, "properties": {"repobilityId": "df6301fa126b168b", "scanner": "scanner-primary", "fingerprint": "1308faf29738d368", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83eb87996b4d17b5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:324)"}, "properties": {"repobilityId": "ddb25dce5cac9352", "scanner": "scanner-primary", "fingerprint": "83eb87996b4d17b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-139221f37af689b3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:340)"}, "properties": {"repobilityId": "bbcd28849caf3704", "scanner": "scanner-primary", "fingerprint": "139221f37af689b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eba4d078b35ead31", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/bet-uuid-1 (packages/core-api/src/__tests__/bet-routes.test.ts:355)"}, "properties": {"repobilityId": "c913cf1f55583c4e", "scanner": "scanner-primary", "fingerprint": "eba4d078b35ead31", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef24566784f61d46", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/bets/missing (packages/core-api/src/__tests__/bet-routes.test.ts:373)"}, "properties": {"repobilityId": "9a63247e194b9051", "scanner": "scanner-primary", "fingerprint": "ef24566784f61d46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8cec4a2e2210e8f5", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:134)"}, "properties": {"repobilityId": "ebd4690455da4692", "scanner": "scanner-primary", "fingerprint": "8cec4a2e2210e8f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f33057ef17209ee9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:225)"}, "properties": {"repobilityId": "34ffd6a821685ee9", "scanner": "scanner-primary", "fingerprint": "f33057ef17209ee9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-25d02d4934e17547", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:242)"}, "properties": {"repobilityId": "efd2df838165e8d0", "scanner": "scanner-primary", "fingerprint": "25d02d4934e17547", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9afe64bbbdf5e0e5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:257)"}, "properties": {"repobilityId": "5d80c8916f061da8", "scanner": "scanner-primary", "fingerprint": "9afe64bbbdf5e0e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6dc58c94d47f3ed", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:270)"}, "properties": {"repobilityId": "ef5766bf9056695b", "scanner": "scanner-primary", "fingerprint": "a6dc58c94d47f3ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e540291c3067eb60", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/voice/sessions/vs-uuid-1 (packages/core-api/src/__tests__/voice-session-routes.test.ts:283)"}, "properties": {"repobilityId": "66cab514e49cf0e6", "scanner": "scanner-primary", "fingerprint": "e540291c3067eb60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2772c1cdb11f1249", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:302)"}, "properties": {"repobilityId": "46b5114ee9926944", "scanner": "scanner-primary", "fingerprint": "2772c1cdb11f1249", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4e43e8549748b2d0", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:331)"}, "properties": {"repobilityId": "46aeac14bf937dee", "scanner": "scanner-primary", "fingerprint": "4e43e8549748b2d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-94826d120f6ad13d", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:352)"}, "properties": {"repobilityId": "318e4bb819d6a09a", "scanner": "scanner-primary", "fingerprint": "94826d120f6ad13d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d7bd97a366e7c4e", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:365)"}, "properties": {"repobilityId": "265b57be0c5b5153", "scanner": "scanner-primary", "fingerprint": "5d7bd97a366e7c4e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-70339530890f0c5a", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/voice/sessions/vs-uuid-1/complete (packages/core-api/src/__tests__/voice-session-routes.test.ts:378)"}, "properties": {"repobilityId": "be1b72a83930fd87", "scanner": "scanner-primary", "fingerprint": "70339530890f0c5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-40d65fce32aa06a3", "level": "error", "message": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:17)"}, "properties": {"repobilityId": "79a2e958a6a61a33", "scanner": "scanner-primary", "fingerprint": "40d65fce32aa06a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-29cbbeb36adbafdc", "level": "error", "message": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:27)"}, "properties": {"repobilityId": "426fa5faef50b1bb", "scanner": "scanner-primary", "fingerprint": "29cbbeb36adbafdc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f5a021931b9460a4", "level": "error", "message": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:37)"}, "properties": {"repobilityId": "b185ed5cbf53da92", "scanner": "scanner-primary", "fingerprint": "f5a021931b9460a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9b4fa78ec1618021", "level": "error", "message": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:47)"}, "properties": {"repobilityId": "724daffc83991380", "scanner": "scanner-primary", "fingerprint": "9b4fa78ec1618021", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c32c326e6d1cfca4", "level": "error", "message": {"text": "Dangling fetch: GET /test (packages/core-api/src/__tests__/error-handler.test.ts:57)"}, "properties": {"repobilityId": "23e47ae58282a560", "scanner": "scanner-primary", "fingerprint": "c32c326e6d1cfca4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-afb969e8c1281507", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ingest/uploads/00000000-0000-4000-8000-000000000000 (packages/core-api/src/__tests__/ingest-routes.test.ts:412)"}, "properties": {"repobilityId": "d0f2143458d89b0e", "scanner": "scanner-primary", "fingerprint": "afb969e8c1281507", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb4f91061a5800b2", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/ingest/uploads/not-a-uuid (packages/core-api/src/__tests__/ingest-routes.test.ts:426)"}, "properties": {"repobilityId": "1601e457158dccbf", "scanner": "scanner-primary", "fingerprint": "bb4f91061a5800b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fdd932883702afd4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:69)"}, "properties": {"repobilityId": "4177e63ec85cc9e8", "scanner": "scanner-primary", "fingerprint": "fdd932883702afd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9ddb2d0a55b1d2e7", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/notification/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:82)"}, "properties": {"repobilityId": "d6f9e1c44d76cb2b", "scanner": "scanner-primary", "fingerprint": "9ddb2d0a55b1d2e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b13dd70e3f26a8e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/skill-execution/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:94)"}, "properties": {"repobilityId": "ed354d10b6c170cc", "scanner": "scanner-primary", "fingerprint": "b13dd70e3f26a8e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0238c543c9a1d31f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:106)"}, "properties": {"repobilityId": "0fa5e3610778001b", "scanner": "scanner-primary", "fingerprint": "0238c543c9a1d31f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-907428dcc9561bea", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/nonexistent-queue/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:116)"}, "properties": {"repobilityId": "86b13d04a7bfc168", "scanner": "scanner-primary", "fingerprint": "907428dcc9561bea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe578c6ce68132ce", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:127)"}, "properties": {"repobilityId": "b08497e1f7985311", "scanner": "scanner-primary", "fingerprint": "fe578c6ce68132ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b8c0648e3fc113bb", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:140)"}, "properties": {"repobilityId": "d451535b63757660", "scanner": "scanner-primary", "fingerprint": "b8c0648e3fc113bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-210082a5e8c9aee2", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/daily-sweep/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:153)"}, "properties": {"repobilityId": "b10de84122916df6", "scanner": "scanner-primary", "fingerprint": "210082a5e8c9aee2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c1a4688788edf79", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/${name}/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:172)"}, "properties": {"repobilityId": "9387dcfd54c7ddc4", "scanner": "scanner-primary", "fingerprint": "0c1a4688788edf79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-15a88af607509084", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/admin/queues/capture-pipeline/clear (packages/core-api/src/__tests__/admin-queue-clear.test.ts:193)"}, "properties": {"repobilityId": "44320855c03469ec", "scanner": "scanner-primary", "fingerprint": "15a88af607509084", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cdceb2b9fa56518f", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/k8s.md (packages/core-api/src/__tests__/wiki-routes.test.ts:103)"}, "properties": {"repobilityId": "2443c82f06e83140", "scanner": "scanner-primary", "fingerprint": "cdceb2b9fa56518f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e860714bb292120", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/nonexistent.md (packages/core-api/src/__tests__/wiki-routes.test.ts:115)"}, "properties": {"repobilityId": "a9c061cbfccff36d", "scanner": "scanner-primary", "fingerprint": "7e860714bb292120", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d5bd55e687499e9a", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/wiki/pages/entities/cloud/aws.md (packages/core-api/src/__tests__/wiki-routes.test.ts:126)"}, "properties": {"repobilityId": "a7fce028e6bf8b3a", "scanner": "scanner-primary", "fingerprint": "d5bd55e687499e9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5ddd48be1407f2d9", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:228)"}, "properties": {"repobilityId": "369dad2c9df48488", "scanner": "scanner-primary", "fingerprint": "5ddd48be1407f2d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a413090357e05fd1", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:248)"}, "properties": {"repobilityId": "4fccd8c27952d473", "scanner": "scanner-primary", "fingerprint": "a413090357e05fd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bac719e30944450f", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:272)"}, "properties": {"repobilityId": "17aed67dc8268495", "scanner": "scanner-primary", "fingerprint": "bac719e30944450f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d2b84b7598e407bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/pipeline-health/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:287)"}, "properties": {"repobilityId": "3bbd02b590ebc049", "scanner": "scanner-primary", "fingerprint": "d2b84b7598e407bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4463ffe27e3f7b71", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/invalid_name!/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:305)"}, "properties": {"repobilityId": "f730f64cfc376b4e", "scanner": "scanner-primary", "fingerprint": "4463ffe27e3f7b71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1c5c8a16520f65a6", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/skills/weekly-brief/trigger (packages/core-api/src/__tests__/skills-routes.test.ts:316)"}, "properties": {"repobilityId": "1e64a3e697e50184", "scanner": "scanner-primary", "fingerprint": "1c5c8a16520f65a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf04a99d5dd5d944", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:357)"}, "properties": {"repobilityId": "8264bf5c0995fdbc", "scanner": "scanner-primary", "fingerprint": "cf04a99d5dd5d944", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe3ac6b83330b733", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:376)"}, "properties": {"repobilityId": "f7f666ba871642ad", "scanner": "scanner-primary", "fingerprint": "fe3ac6b83330b733", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d892ed67b4f8733a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:393)"}, "properties": {"repobilityId": "70c2d18200c38616", "scanner": "scanner-primary", "fingerprint": "d892ed67b4f8733a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-17d53c179d7007db", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:412)"}, "properties": {"repobilityId": "b3c32e53327b7287", "scanner": "scanner-primary", "fingerprint": "17d53c179d7007db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b526059031411e1c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:431)"}, "properties": {"repobilityId": "8b4c31666b54a0b0", "scanner": "scanner-primary", "fingerprint": "b526059031411e1c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d9223640ab4a52c5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:449)"}, "properties": {"repobilityId": "c82c7a454e5ead36", "scanner": "scanner-primary", "fingerprint": "d9223640ab4a52c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d352a4f170cf8043", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:466)"}, "properties": {"repobilityId": "e43a212219fc172d", "scanner": "scanner-primary", "fingerprint": "d352a4f170cf8043", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7184bcea98ba7411", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:483)"}, "properties": {"repobilityId": "e3cbbc5725852a68", "scanner": "scanner-primary", "fingerprint": "7184bcea98ba7411", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8d2391254c20aae4", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:498)"}, "properties": {"repobilityId": "9700a4c0755c19db", "scanner": "scanner-primary", "fingerprint": "8d2391254c20aae4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-72d21a12c16f7be5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/nonexistent-skill (packages/core-api/src/__tests__/skills-routes.test.ts:515)"}, "properties": {"repobilityId": "df588a276ac0b8e9", "scanner": "scanner-primary", "fingerprint": "72d21a12c16f7be5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9a3dcd287273a318", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:535)"}, "properties": {"repobilityId": "4836989ea9b1ee46", "scanner": "scanner-primary", "fingerprint": "9a3dcd287273a318", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-885d8ea44ae814ee", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/skills/weekly-brief (packages/core-api/src/__tests__/skills-routes.test.ts:552)"}, "properties": {"repobilityId": "7f022467b0c49e6f", "scanner": "scanner-primary", "fingerprint": "885d8ea44ae814ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bc870f3bee3df4e8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:341)"}, "properties": {"repobilityId": "2a1ef0196bab2e27", "scanner": "scanner-primary", "fingerprint": "bc870f3bee3df4e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-64e94b692e8b5ec8", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:352)"}, "properties": {"repobilityId": "cb41cf2d8da99be4", "scanner": "scanner-primary", "fingerprint": "64e94b692e8b5ec8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fa32944247378c8d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:379)"}, "properties": {"repobilityId": "2d7dc211c02ddbd3", "scanner": "scanner-primary", "fingerprint": "fa32944247378c8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-05e2b5e3923b4e73", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:394)"}, "properties": {"repobilityId": "5525845771b967fc", "scanner": "scanner-primary", "fingerprint": "05e2b5e3923b4e73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-68b87a459b660090", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:407)"}, "properties": {"repobilityId": "1319ac07760b4d7a", "scanner": "scanner-primary", "fingerprint": "68b87a459b660090", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e5bff3d624b1d94f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:423)"}, "properties": {"repobilityId": "a989e7f9c09696f8", "scanner": "scanner-primary", "fingerprint": "e5bff3d624b1d94f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-76ecbebf3c2b5ea6", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:437)"}, "properties": {"repobilityId": "ecd52355923c1a7e", "scanner": "scanner-primary", "fingerprint": "76ecbebf3c2b5ea6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e8d4955304a5af1a", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/captures/cap-abc-123 (packages/core-api/src/__tests__/captures-routes.test.ts:468)"}, "properties": {"repobilityId": "1cd8a9336b0197e7", "scanner": "scanner-primary", "fingerprint": "e8d4955304a5af1a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b885ac9bb884130e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/v1/captures/missing-id (packages/core-api/src/__tests__/captures-routes.test.ts:478)"}, "properties": {"repobilityId": "33e82839b200b85f", "scanner": "scanner-primary", "fingerprint": "b885ac9bb884130e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-78046963cf973656", "level": "error", "message": {"text": "Dangling fetch: POST /api/v1/entities/merge (packages/slack-bot/src/lib/core-api-client.ts:213)"}, "properties": {"repobilityId": "cb8f75639779f4b8", "scanner": "scanner-primary", "fingerprint": "78046963cf973656", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2291e1896dc349a9", "level": "error", "message": {"text": "Dangling fetch: GET /api/v1/admin/pipeline/health (packages/slack-bot/src/lib/core-api-client.ts:294)"}, "properties": {"repobilityId": "be0d75968063f2e8", "scanner": "scanner-primary", "fingerprint": "2291e1896dc349a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8e9187eb360f9a72", "level": "error", "message": {"text": "Dangling fetch: GET /api/unknown (packages/voice-capture/src/__tests__/server.test.ts:158)"}, "properties": {"repobilityId": "ca2d6f5961d8e671", "scanner": "scanner-primary", "fingerprint": "8e9187eb360f9a72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-76c93d747b11e539", "level": "error", "message": {"text": "Dangling fetch: GET /captures/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:111)"}, "properties": {"repobilityId": "a2bd761d677ca531", "scanner": "scanner-primary", "fingerprint": "76c93d747b11e539", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a51dc233c7e5a14", "level": "error", "message": {"text": "Dangling fetch: POST /captures (packages/mobile/src/lib/api-client.ts:114)"}, "properties": {"repobilityId": "9fa6da03d384702e", "scanner": "scanner-primary", "fingerprint": "3a51dc233c7e5a14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6e1932979465fde1", "level": "error", "message": {"text": "Dangling fetch: GET /entities/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:123)"}, "properties": {"repobilityId": "b80e566ca3033359", "scanner": "scanner-primary", "fingerprint": "6e1932979465fde1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-63835c6c2df9858c", "level": "error", "message": {"text": "Dangling fetch: PATCH /briefs/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:135)"}, "properties": {"repobilityId": "cad7e4469797380d", "scanner": "scanner-primary", "fingerprint": "63835c6c2df9858c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f37cc66a0c814a6", "level": "error", "message": {"text": "Dangling fetch: GET /search${buildQueryString(params)} (packages/mobile/src/lib/api-client.ts:141)"}, "properties": {"repobilityId": "04afacdf0225db90", "scanner": "scanner-primary", "fingerprint": "7f37cc66a0c814a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-68a57a90125cf73f", "level": "error", "message": {"text": "Dangling fetch: PATCH /commitments/${encodeURIComponent(id)} (packages/mobile/src/lib/api-client.ts:150)"}, "properties": {"repobilityId": "93512d9a9c30b68c", "scanner": "scanner-primary", "fingerprint": "68a57a90125cf73f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4833c0a67f186f41", "level": "error", "message": {"text": "Dangling fetch: GET /settings/${encodeURIComponent(key)} (packages/mobile/src/lib/api-client.ts:156)"}, "properties": {"repobilityId": "af69d77b2a55e5e4", "scanner": "scanner-primary", "fingerprint": "4833c0a67f186f41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-15d9756fc05217a1", "level": "error", "message": {"text": "Dangling fetch: GET /stats (packages/mobile/src/lib/api-client.ts:162)"}, "properties": {"repobilityId": "760a564b7d440dc8", "scanner": "scanner-primary", "fingerprint": "15d9756fc05217a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2c9285eacd79cf68", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:84)"}, "properties": {"repobilityId": "c28e2db71e8fe091", "scanner": "scanner-primary", "fingerprint": "2c9285eacd79cf68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-38b915f49bc7a9e6", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:99)"}, "properties": {"repobilityId": "e745e9a2b353b28f", "scanner": "scanner-primary", "fingerprint": "38b915f49bc7a9e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-484dfc90efb46675", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:114)"}, "properties": {"repobilityId": "4acf83b09d00cb4c", "scanner": "scanner-primary", "fingerprint": "484dfc90efb46675", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-93370ac01ea8d95a", "level": "error", "message": {"text": "Dangling fetch: GET /entities (packages/mobile/__tests__/lib/api-client.test.ts:115)"}, "properties": {"repobilityId": "44243ed4c705df4c", "scanner": "scanner-primary", "fingerprint": "93370ac01ea8d95a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cbaf11dcb51fe3f7", "level": "error", "message": {"text": "Dangling fetch: GET /search?q=test (packages/mobile/__tests__/lib/api-client.test.ts:116)"}, "properties": {"repobilityId": "0e24516039f5f97a", "scanner": "scanner-primary", "fingerprint": "cbaf11dcb51fe3f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ceabfd3890823f3f", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:128)"}, "properties": {"repobilityId": "67a0bdb1796dca98", "scanner": "scanner-primary", "fingerprint": "ceabfd3890823f3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7980ebbe1b5bc283", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:133)"}, "properties": {"repobilityId": "a425006e49978071", "scanner": "scanner-primary", "fingerprint": "7980ebbe1b5bc283", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-556f32080557d674", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:143)"}, "properties": {"repobilityId": "3bb177bda786d5df", "scanner": "scanner-primary", "fingerprint": "556f32080557d674", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-87e1495bd2b17af8", "level": "error", "message": {"text": "Dangling fetch: GET /captures (packages/mobile/__tests__/lib/api-client.test.ts:159)"}, "properties": {"repobilityId": "a98aa4fd614a33a1", "scanner": "scanner-primary", "fingerprint": "87e1495bd2b17af8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-84cf3fd81ca6f4a8", "level": "error", "message": {"text": "Dangling fetch: GET /captures/x (packages/mobile/__tests__/lib/api-client.test.ts:170)"}, "properties": {"repobilityId": "aad720085aa18042", "scanner": "scanner-primary", "fingerprint": "84cf3fd81ca6f4a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-af4de720f651079e", "level": "note", "message": {"text": "Unused endpoint: POST /extract"}, "properties": {"repobilityId": "ef3e37cf65ce3cec", "scanner": "scanner-primary", "fingerprint": "af4de720f651079e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a6d91f2236825bf", "level": "note", "message": {"text": "Unused endpoint: ANY /"}, "properties": {"repobilityId": "8ec8972127eea5af", "scanner": "scanner-primary", "fingerprint": "1a6d91f2236825bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad3a09700e2eb8e5", "level": "note", "message": {"text": "Unused endpoint: ANY /api/create_link_token"}, "properties": {"repobilityId": "b7b5da5ae8e230a8", "scanner": "scanner-primary", "fingerprint": "ad3a09700e2eb8e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-96d5abf38215b996", "level": "note", "message": {"text": "Unused endpoint: ANY /api/exchange_public_token"}, "properties": {"repobilityId": "a07f9942c5ba3a67", "scanner": "scanner-primary", "fingerprint": "96d5abf38215b996", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-82ad2cbf9edb3e8a", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/captures/*"}, "properties": {"repobilityId": "746fa550553fccc5", "scanner": "scanner-primary", "fingerprint": "82ad2cbf9edb3e8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52b5c9dbba9e91e2", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/search"}, "properties": {"repobilityId": "2082781ae2aa8ffa", "scanner": "scanner-primary", "fingerprint": "52b5c9dbba9e91e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-040d017bebf7546f", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/synthesize"}, "properties": {"repobilityId": "92202323f9e893bb", "scanner": "scanner-primary", "fingerprint": "040d017bebf7546f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0ac6821ee660594", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/voice-captures"}, "properties": {"repobilityId": "a1a543a5d6f38774", "scanner": "scanner-primary", "fingerprint": "b0ac6821ee660594", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4122dd19b0956a0d", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/briefs/*/refine"}, "properties": {"repobilityId": "3b61df2595e38384", "scanner": "scanner-primary", "fingerprint": "4122dd19b0956a0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c38ed2f4d29b5029", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/briefs/*/audio"}, "properties": {"repobilityId": "bcc051f24a80f509", "scanner": "scanner-primary", "fingerprint": "c38ed2f4d29b5029", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d5fff34683bb72d", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/entities/*/ask"}, "properties": {"repobilityId": "336f2f8a7854bc1d", "scanner": "scanner-primary", "fingerprint": "4d5fff34683bb72d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e18c77b60b6a519", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/entities/*/brief"}, "properties": {"repobilityId": "14ee3c18194d9271", "scanner": "scanner-primary", "fingerprint": "4e18c77b60b6a519", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-737464a5fefd2cf4", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/admin/*"}, "properties": {"repobilityId": "23862e3532661046", "scanner": "scanner-primary", "fingerprint": "737464a5fefd2cf4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-765b3181318378b8", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/*"}, "properties": {"repobilityId": "f60a09e19ff3e402", "scanner": "scanner-primary", "fingerprint": "765b3181318378b8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b95eaeb9464a0d7", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/briefs/*"}, "properties": {"repobilityId": "c40dfde29778518a", "scanner": "scanner-primary", "fingerprint": "4b95eaeb9464a0d7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-428ba166a585ab58", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/commitments/*"}, "properties": {"repobilityId": "12214eeddc72f1f6", "scanner": "scanner-primary", "fingerprint": "428ba166a585ab58", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-629543938b6bff58", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/settings/*"}, "properties": {"repobilityId": "2d212fb0057739d0", "scanner": "scanner-primary", "fingerprint": "629543938b6bff58", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f46385e616f5022a", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/stats/*"}, "properties": {"repobilityId": "4ec9dfb245c23727", "scanner": "scanner-primary", "fingerprint": "f46385e616f5022a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efbc80312c5027b5", "level": "note", "message": {"text": "Unused endpoint: ALL /mcp"}, "properties": {"repobilityId": "4a4ef3e99109d5aa", "scanner": "scanner-primary", "fingerprint": "efbc80312c5027b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-15d53ea4f49143fd", "level": "note", "message": {"text": "Unused endpoint: USE /api/v1/captures"}, "properties": {"repobilityId": "52a0eb592396b3c7", "scanner": "scanner-primary", "fingerprint": "15d53ea4f49143fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4720234eadac41f0", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/skills/:name/logs"}, "properties": {"repobilityId": "4f616bee52503ff9", "scanner": "scanner-primary", "fingerprint": "4720234eadac41f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-054e975f22cff1e3", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/skills/:name"}, "properties": {"repobilityId": "3094badda9fc89ee", "scanner": "scanner-primary", "fingerprint": "054e975f22cff1e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0930fcc8ba457931", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/email/drafts/:id"}, "properties": {"repobilityId": "68facab0217ef2d9", "scanner": "scanner-primary", "fingerprint": "0930fcc8ba457931", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ffa6c33519ec14b", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/intelligence/:skill/trigger"}, "properties": {"repobilityId": "99b7f34952d3433b", "scanner": "scanner-primary", "fingerprint": "7ffa6c33519ec14b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e5da7b59329ded7b", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/intelligence/unresolved-questions"}, "properties": {"repobilityId": "023b96b775abd96b", "scanner": "scanner-primary", "fingerprint": "e5da7b59329ded7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1a7a3b3dee17dcf", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/bets/:id"}, "properties": {"repobilityId": "ac78d16488369caf", "scanner": "scanner-primary", "fingerprint": "c1a7a3b3dee17dcf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41532fd2ca553d88", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/bets/:id"}, "properties": {"repobilityId": "cf3e95d1240e0330", "scanner": "scanner-primary", "fingerprint": "41532fd2ca553d88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-637b7d46c2ebbd96", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/voice/sessions/:id"}, "properties": {"repobilityId": "8176c76fe676e295", "scanner": "scanner-primary", "fingerprint": "637b7d46c2ebbd96", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d9916b32bbb9397a", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/voice/sessions/:id"}, "properties": {"repobilityId": "001a06f713ca25ef", "scanner": "scanner-primary", "fingerprint": "d9916b32bbb9397a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc50b2c22cf87069", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/voice/sessions/:id/complete"}, "properties": {"repobilityId": "5f01ab647f9b8f29", "scanner": "scanner-primary", "fingerprint": "cc50b2c22cf87069", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9d1cfab8f04e2a39", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/captures/:id"}, "properties": {"repobilityId": "dad73b5405782d5c", "scanner": "scanner-primary", "fingerprint": "9d1cfab8f04e2a39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4589a5eeb10eb7ea", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/captures/:id"}, "properties": {"repobilityId": "6487d6c7dcc0446a", "scanner": "scanner-primary", "fingerprint": "4589a5eeb10eb7ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-877d3546a842900f", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/entities/:id/commitments"}, "properties": {"repobilityId": "976cabda09cd8ab0", "scanner": "scanner-primary", "fingerprint": "877d3546a842900f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fe3b2f1003d0a06c", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/commitments/:id"}, "properties": {"repobilityId": "c3424c83c168ee6c", "scanner": "scanner-primary", "fingerprint": "fe3b2f1003d0a06c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-449db4c19b6ae24a", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/briefs"}, "properties": {"repobilityId": "cc7b6b4cbfa1ad00", "scanner": "scanner-primary", "fingerprint": "449db4c19b6ae24a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-576529aeb7555d3a", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/briefs/:id"}, "properties": {"repobilityId": "1db6fe24865c37f6", "scanner": "scanner-primary", "fingerprint": "576529aeb7555d3a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9fda08f217eab62", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/briefs/:id/refine"}, "properties": {"repobilityId": "e88d8d70aed80bdf", "scanner": "scanner-primary", "fingerprint": "e9fda08f217eab62", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5aaa3b48dd0eb7db", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/briefs/:id/dismiss"}, "properties": {"repobilityId": "3b06c992d2d290f6", "scanner": "scanner-primary", "fingerprint": "5aaa3b48dd0eb7db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b4927c6d8132cbf", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/briefs/:id"}, "properties": {"repobilityId": "7b753e389a27ac96", "scanner": "scanner-primary", "fingerprint": "5b4927c6d8132cbf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a436691337284d03", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/health"}, "properties": {"repobilityId": "3cff71963e64d862", "scanner": "scanner-primary", "fingerprint": "a436691337284d03", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0ff71f3a481b5ee", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/config/ai-routing"}, "properties": {"repobilityId": "486bb52c9064767e", "scanner": "scanner-primary", "fingerprint": "c0ff71f3a481b5ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-12ef1785033dbcab", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/config/integrations"}, "properties": {"repobilityId": "15a559b0ae1ed157", "scanner": "scanner-primary", "fingerprint": "12ef1785033dbcab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dc4b535cc23fe6e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/settings/:key"}, "properties": {"repobilityId": "8d6aafc4a438b6a0", "scanner": "scanner-primary", "fingerprint": "dc4b535cc23fe6e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4130b05a3f7fff68", "level": "note", "message": {"text": "Unused endpoint: PUT /api/v1/settings/:key"}, "properties": {"repobilityId": "471404a92de0854a", "scanner": "scanner-primary", "fingerprint": "4130b05a3f7fff68", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f637c9b3970a61e", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/entities/:id/related"}, "properties": {"repobilityId": "1574af1492974400", "scanner": "scanner-primary", "fingerprint": "3f637c9b3970a61e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3322c08f7aa69f34", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/entities/:id/mentions-timeline"}, "properties": {"repobilityId": "8accae82d285758b", "scanner": "scanner-primary", "fingerprint": "3322c08f7aa69f34", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-80ff81d6a5b33db8", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/entities/:id/merge"}, "properties": {"repobilityId": "747faa4584b07232", "scanner": "scanner-primary", "fingerprint": "80ff81d6a5b33db8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-74c5bd94b878e135", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/entities/:id/ask"}, "properties": {"repobilityId": "f3ba895742b82c12", "scanner": "scanner-primary", "fingerprint": "74c5bd94b878e135", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64c935694c44e74d", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/entities/:id/brief"}, "properties": {"repobilityId": "a8928838a228c0b7", "scanner": "scanner-primary", "fingerprint": "64c935694c44e74d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5a6bb88f1f0d184d", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/insurance-policies"}, "properties": {"repobilityId": "6a4431f4efd2dc65", "scanner": "scanner-primary", "fingerprint": "5a6bb88f1f0d184d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}