{"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-132a090459729554", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/primitives/select.tsx:187", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/primitives/select.tsx:187"}, "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-23aa7eb572ace398", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/command-palette.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/command-palette.tsx:161"}, "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-34a1830f1eb41bee", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/top-bar.tsx:68", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/top-bar.tsx:68"}, "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-6948c8de4900aec2", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/nav-rail.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/nav-rail.tsx:344"}, "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-aa59622e989718c0", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/pinned-tab-bar.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/pinned-tab-bar.tsx:51"}, "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-4aeafe6f8857df01", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/(workspace)/layout.tsx:739", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/(workspace)/layout.tsx:739"}, "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-2ae3b8ee74142711", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/kit/page.tsx:250", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/kit/page.tsx:250"}, "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-22e64426882ec3ac", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-det", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-detail-drawer.tsx:138"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef6a58d178d22788", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-edi", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-edit-drawer.tsx:115"}, "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-0d851fc517bd7bb6", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/integrations-s", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/integrations-screen.tsx:81"}, "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-eafa7080ee712cbf", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/attention/components/attention-screen.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/attention/components/attention-screen.tsx:65"}, "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-722868f64e141b2b", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-list.tsx:5", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-list.tsx:50"}, "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-be460ce3ff107b95", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-card.tsx:3", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-card.tsx:34"}, "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-c953b402296742d5", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-detail-screen.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-detail-screen.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-2e0eedbd44b87f36", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-row-actions.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-row-actions.tsx:275"}, "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-f2af425a26e2f158", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/live-runs", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/live-runs-card.tsx:60"}, "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-ba55fd39ac27ba87", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/runners-c", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/runners-card.tsx:36"}, "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-d2836e92a4c53a10", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/spend-car", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/spend-card.tsx:38"}, "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-067da39e3f69527a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/attention", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/attention-queue.tsx:57"}, "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-829aaac64bf2b333", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/status-do", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/status-donut.tsx:34"}, "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-37032ece88cb2689", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/schedules", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/schedules-card.tsx:36"}, "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-719b9afe5595376a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/docs/components/docs-screen.tsx:170", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/docs/components/docs-screen.tsx:170"}, "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-2a8c30820d091ce2", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/sessions/components/sessions-screen.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/sessions/components/sessions-screen.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-b4d2cc47d5fd28e3", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-switcher.tsx:64", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-switcher.tsx:64"}, "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-dbf66e935d67124d", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-home.tsx:96", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-home.tsx:96"}, "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-6b568b7caada00f0", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/orgs-tab.tsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/orgs-tab.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-1dd7960dc2cde1ba", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-members-card.tsx:2", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-members-card.tsx:203"}, "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-21c2b958e6a79ad6", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/ops-monitor.tsx:21", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/ops-monitor.tsx:217"}, "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-3958e15fe3c7ac07", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/run-detail.tsx:414", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/run-detail.tsx:414"}, "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-a6015165b7567878", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/shell/nav-rail-compact.tsx:293", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/shell/nav-rail-compact.tsx:293"}, "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-da3339bbf55b8047", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/schedules/components/schedules-screen.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/schedules/components/schedules-screen.tsx:305"}, "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-db2ac17d18e2cd33", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-card.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-card.tsx:58"}, "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-ba792f1240bbde79", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-studio-drawer.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-studio-drawer.tsx:70"}, "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-57d882f1b96e1a2a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/runners-screen.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/runners-screen.tsx:124"}, "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-c9c274dea57ae6e8", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/project-runners-scr", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/project-runners-screen.tsx:165"}, "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-dab0b3fec0ceb6bb", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/device-detail.tsx:1", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/device-detail.tsx:146"}, "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-73858d88e786560d", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/session-screen.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/session-screen.tsx:181"}, "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-c6ca4fd0405e4526", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/tool-card.tsx:73", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/tool-card.tsx:73"}, "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-6e245d0e24d6eb7a", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/conversation-list.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/conversation-list.tsx:240"}, "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-71b2d2658b88610d", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/chat-screen.tsx:175", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/chat-screen.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-28fef6139436899e", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/members-ta", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/members-tab.tsx:113"}, "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-24b3137d04258608", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/project-se", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/project-settings-screen.tsx:141"}, "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-0674abf2da3693cb", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/labels-tab", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/labels-tab.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-aeb2ece8feb1c550", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/kpi-row.tsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/kpi-row.tsx:35"}, "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-2c24768df6f525c0", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/spotlight-projects", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/spotlight-projects.tsx:27"}, "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-69a5cebad68d91dd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/activity-feed.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/activity-feed.tsx:56"}, "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-50468d57c5d98db0", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/work-distribution.", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/work-distribution.tsx:53"}, "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-0c00d29c2b0ffdf7", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/attention-panel.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/attention-panel.tsx:106"}, "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-afe3425b6ed39a12", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/diff-summary.tsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/diff-summary.tsx:82"}, "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-214e407f7190714e", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/notification-bell.tsx:134", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/notification-bell.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-0a5f17e6c9194e68", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/issue-list-item.tsx:18", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/issue-list-item.tsx:18"}, "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-df4882941dec61c5", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/file-upload.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/file-upload.tsx:147"}, "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-ebc9deeceba3d789", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/message-bubble/diff-summary.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/message-bubble/diff-summary.tsx:62"}, "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-3950516bc920e5bd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-relations.tsx:65", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-relations.tsx:65"}, "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-9e1482500aaa0bdd", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-agent-sessions.tsx:2", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-agent-sessions.tsx:27"}, "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-893f27b24d7f6883", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-attachments.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-attachments.tsx:54"}, "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-29ede3d51bca6275", "name": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/issues.ts:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/issues.ts:17"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0473a96b99a0f006", "name": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/agent-sessions.ts:119", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/agent-sessions.ts:119"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27532b89bb29a698", "name": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/tasks.ts:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/tasks.ts:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-010507ca9c458f2d", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectOverview.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectOverview.tsx:145"}, "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-3a183325ae0fa52c", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectPipeline.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectPipeline.tsx:207"}, "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-a7bc1e402980c89f", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/project-issues/status-multi-select.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/project-issues/status-multi-select.tsx:47"}, "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-b0d6d909474f1535", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.tsx:114", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.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-c1d82d0354c01eac", "name": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.tsx:34", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.tsx:34"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1d70cb4c8676f55", "name": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-351dc4dc7cd22e73", "name": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChatPromptReview.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChatPromptReview.tsx:22"}, "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-2be9e6af8ba19ad6", "name": "Stray `console.log` in TS/JS \u2014 packages/dev/src/hooks/use-agent-commands.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/dev/src/hooks/use-agent-commands.ts:174"}, "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-317e1d5aecdbed9e", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/integration/session-group-resume-e2e.test.ts:364", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/integration/session-group-resume-e2e.test.ts:364"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-423b1eb89f6d96e2", "name": "Stray `console.log` in TS/JS \u2014 packages/core/scripts/backfill-agent-session-turns.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/scripts/backfill-agent-session-turns.ts:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd6640183783928b", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/install/fetch-release.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/install/fetch-release.ts:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16efd6911066d1ab", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/git/branches.ts:71", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/git/branches.ts:71"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07ef73864601bbe7", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/agent-sessions/routes.ts:1483", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/agent-sessions/routes.ts:1483"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac70e8f5ffb74e3c", "name": "Stray `console.log` in TS/JS \u2014 packages/core/src/db/migrate.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/db/migrate.ts:16"}, "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-41a59f4b01c9249c", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/routes.ts:475", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/routes.ts:475"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8ddd65598812c85", "name": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/dispatch.ts:104", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/dispatch.ts:104"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bcd707ad62813b7", "name": "Dockerfile runs as root: packages/web-v2/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: packages/web-v2/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-dcd99bc1b7ab5aed", "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-52518a2a97fc1c0e", "name": "Dockerfile runs as root: packages/core/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: packages/core/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-02ad50ba582231c9", "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-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d46c5695c90b9848", "name": "Insecure pattern 'node_child_process' in scripts/check-source-language.mjs:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-source-language.mjs:30"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9129cb27a99a0d2f", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/02 Issues.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/02 Issues.html:131"}, "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-fd6eb41056825fb1", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/web-v2/design/draft-screen/01 Dashboard.html:173", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/web-v2/design/draft-screen/01 Dashboard.html:173"}, "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-eb71ff1b21178892", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/01 Dashboard.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/01 Dashboard.html:131"}, "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-2a5745a7765accb5", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/03 Issue detail.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/03 Issue detail.html:131"}, "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-447357af7d124750", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/06 Library.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/06 Library.html:131"}, "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-eff723ba9635072d", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/10 Runners.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/10 Runners.html:131"}, "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-fb3f331ef53cb09d", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/05 Agent run.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/05 Agent run.html:131"}, "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-5a9da8579116cb08", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/08 Workspace overview.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/08 Workspace overview.html:131"}, "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-0b52198e60911c34", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/04 Agents.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/04 Agents.html:131"}, "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-2174e7ae26c6c73a", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/07 Automation.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/07 Automation.html:131"}, "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-0cb89248b980784b", "name": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/09 Usage.html:131", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/09 Usage.html:131"}, "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-c5c06a0fb394d559", "name": "Insecure pattern 'cors_wildcard' in packages/web-v2/src/app/forge-config/route.ts:44", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in packages/web-v2/src/app/forge-config/route.ts:44"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dcfafc4e9cb17ffa", "name": "Possible secret in packages/web-v2/src/features/auth/validation.ts", "shortDescription": {"text": "Possible secret in packages/web-v2/src/features/auth/validation.ts"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4fcd3b8fea8cc294", "name": "Insecure pattern 'node_child_process' in packages/core/src/integrations/routes.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/integrations/routes.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-7dc88e86ef48789c", "name": "Insecure pattern 'node_child_process' in packages/core/src/git/branches.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/git/branches.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3eb9d6745acac8cd", "name": "Insecure pattern 'node_child_process' in packages/core/src/git/ssh-keys.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/core/src/git/ssh-keys.ts:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-740b88ab8dd23d2f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dependabot/fetch-metadata@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-768e8f28c1850d98", "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "gaurav-nelson/github-action-markdown-link-check@v1 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": "medium", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "softprops/action-gh-release@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "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-af5e551ba7ffb674", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "softprops/action-gh-release@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-69500f428a092d7d", "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f05a9395fff67c83", "name": "Very large file: packages/core/src/integrations/routes.ts (1400 lines)", "shortDescription": {"text": "Very large file: packages/core/src/integrations/routes.ts (1400 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-e77248e8040d5d3f", "name": "Very large file: packages/core/src/projects/routes.test.ts (1563 lines)", "shortDescription": {"text": "Very large file: packages/core/src/projects/routes.test.ts (1563 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-421c59ee0a0c5406", "name": "Very large file: packages/core/src/agent-sessions/routes.ts (2005 lines)", "shortDescription": {"text": "Very large file: packages/core/src/agent-sessions/routes.ts (2005 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-c701be6588482e0f", "name": "Very large file: packages/core/src/db/schema.ts (2529 lines)", "shortDescription": {"text": "Very large file: packages/core/src/db/schema.ts (2529 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-6fa560c4ba32e748", "name": "Node manifest has dependencies but no lockfile: packages/web-v2/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/web-v2/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-480337df8d279ba0", "name": "Node manifest has dependencies but no lockfile: packages/observability/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/observability/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-889092dbc9ab7483", "name": "Node manifest has dependencies but no lockfile: packages/dev/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/dev/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-28e92806c0db3cd2", "name": "Node manifest has dependencies but no lockfile: packages/core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core/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-f85d8f0719e22fa8", "name": "Node manifest has dependencies but no lockfile: packages/contracts/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/contracts/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 19 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 182 placeholder/mock markers across 90 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5aae10debcfd1cba", "name": "Agent authority lacks a verifier contract: packages/core/skills/forge-triage/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: packages/core/skills/forge-triage/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-5e913de01a1aac0a", "name": "Commented-code block (11 lines) in scripts/check-source-language.mjs:8", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/check-source-language.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2049705ff033f7f4", "name": "Commented-code block (5 lines) in packages/web-v2/next.config.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/next.config.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-f636152e7640730c", "name": "Commented-code block (5 lines) in packages/web-v2/scripts/gen-help-content.mjs:2", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/scripts/gen-help-content.mjs: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-2ecca4dfd4333db4", "name": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/page-container.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/page-container.tsx: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-8df5a3d57c3457b3", "name": "Commented-code block (7 lines) in packages/web-v2/src/design/patterns/screen-tabs.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/design/patterns/screen-tabs.tsx: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-e545b90a7e1458e8", "name": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/markdown.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/markdown.tsx: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-4eca3a8b0ddbb893", "name": "Commented-code block (5 lines) in packages/web-v2/src/providers/auth-provider.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/providers/auth-provider.tsx: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-f4be4dd51f611d5f", "name": "Commented-code block (7 lines) in packages/web-v2/src/app/layout.tsx:40", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/app/layout.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4bff1c3a9460b49b", "name": "Commented-code block (5 lines) in packages/web-v2/src/app/invite/accept/page.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/app/invite/accept/page.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c515ead327ed417", "name": "Commented-code block (7 lines) in packages/web-v2/src/app/(workspace)/layout.tsx:184", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/app/(workspace)/layout.tsx:184"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95c11f5e37d69d5d", "name": "Commented-code block (5 lines) in packages/web-v2/src/app/(workspace)/projects/[slug]/agents/[sessionId]/page.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/app/(workspace)/projects/[slug]/agents/[sessionId]/page.tsx: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-b2dabc33e4c7ff67", "name": "Commented-code block (8 lines) in packages/web-v2/src/lib/api/error.ts:36", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/lib/api/error.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c7bca4e2f43b7a2", "name": "Commented-code block (5 lines) in packages/web-v2/src/lib/api/client.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/lib/api/client.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-50940034c086b316", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/lib/api/client.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/lib/api/client.ts:69"}, "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-2d42d26170f93a5e", "name": "Commented-code block (7 lines) in packages/web-v2/src/lib/utils/use-tab-param.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/lib/utils/use-tab-param.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-d629a14629b4081d", "name": "Commented-code block (8 lines) in packages/web-v2/src/lib/utils/use-location-search.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/lib/utils/use-location-search.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-de56c36377ccc78c", "name": "Commented-code block (5 lines) in packages/web-v2/src/lib/ws/event-router.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/lib/ws/event-router.ts:218"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53658b4d819f3181", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/api.ts:100", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/api.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f63779931ba97bc5", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/hooks.ts:208", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/hooks.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c60392f9e6ac743d", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/derive.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/derive.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-eb596b03bcc5395e", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/types.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/types.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-ef5b06a34fd9882d", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/connection-edit-drawer.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/connection-edit-drawer.tsx: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-5aab2ce07c7e333c", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/components/mcp-servers-panel.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/components/mcp-servers-panel.tsx: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-d6bf7e41857f82d0", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/project-integrations-panel.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/project-integrations-panel.tsx: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-395255d8d58ec507", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/integrations/components/integrations-screen.tsx:5", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/integrations/components/integrations-screen.tsx: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-801dbe15ffad4354", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/settings/mcp.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/settings/mcp.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-24a4ec87356aed05", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/mcp.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/mcp.ts:158"}, "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-c3e15d247f9c795e", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/tokens-tab.tsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/tokens-tab.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a7e999acbfa4d0f", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/mcp-tab.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/mcp-tab.tsx: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-b1b0992da358eda7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/components/mcp-tab.tsx:230", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/components/mcp-tab.tsx:230"}, "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-f91020b443091dcd", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/settings-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/settings-screen.tsx: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-3d38e06ab9d462f4", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/notifications-tab.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/notifications-tab.tsx: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-bd8d571572a88a0e", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/automation/hooks.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/automation/hooks.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-f20b0342dd3a5e88", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/automation/components/automation-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/automation/components/automation-screen.tsx: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-64e61201b380b841", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/library/components/library-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/library/components/library-screen.tsx: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-ec9b27383d91c27e", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/usage/components/usage-screen.tsx:9", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/usage/components/usage-screen.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed62e18c312e4ef2", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/attention/hooks.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/attention/hooks.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-3d65d53932b77be7", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/attention/types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/attention/types.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-5e9171312f7e69ae", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/attention/components/attention-screen.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/attention/components/attention-screen.tsx: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-ebf7e54bf1efc6ba", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/hooks.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/hooks.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-5926939cf66d708b", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/projects/types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/projects/types.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-b069162e3e2c4c84", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/project-flyout.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/project-flyout.tsx: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-b9ab8c3e260bca28", "name": "Commented-code block (11 lines) in packages/web-v2/src/features/projects/components/new-project-dialog.tsx:3", "shortDescription": {"text": "Commented-code block (11 lines) in packages/web-v2/src/features/projects/components/new-project-dialog.tsx: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-634583c39de699b4", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/projects-console.tsx:61", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/projects-console.tsx: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-94fb31b5260e4e23", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/api.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/api.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-4bba52dbcb1cb822", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/detail-hooks.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/detail-hooks.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-264802e0ff5c989e", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/hooks.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/hooks.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-6d64e032e6bef352", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/types.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/types.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-6f5e9aaf70bb5dd9", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/step-artifact-card.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/step-artifact-card.tsx: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-f7cf93f7d978e346", "name": "Commented-code block (11 lines) in packages/web-v2/src/features/issues/components/issues-screen.tsx:12", "shortDescription": {"text": "Commented-code block (11 lines) in packages/web-v2/src/features/issues/components/issues-screen.tsx: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-cfee39fe13ff1f35", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issue-table-row.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issue-table-row.tsx: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-c4a9d6ec0ce6eea6", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/issue-quick-actions.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/issue-quick-actions.tsx: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-0251f92355190999", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issues-list-view.tsx:27", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issues-list-view.tsx: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-14e9cd199f84087e", "name": "Commented-code block (9 lines) in packages/web-v2/src/features/issues/components/issues-insights-view.tsx:3", "shortDescription": {"text": "Commented-code block (9 lines) in packages/web-v2/src/features/issues/components/issues-insights-view.tsx: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-dccef1d334b04c56", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/session-group-timeline.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/session-group-timeline.tsx: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-38dc20fd17a470e6", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/issue-ref-badge.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/issue-ref-badge.tsx: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-03756a11406af83b", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/issue-row-actions.tsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/issue-row-actions.tsx: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-5df4870c3ec15df6", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/live-agent-panel.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/live-agent-panel.tsx: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-2e87016ca3e66421", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/bulk-action-bar.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/bulk-action-bar.tsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-751628cbf656fa6a", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/blocker-banner.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/blocker-banner.tsx: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-8ad36d6399af7e10", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/new-issue-dialog.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/new-issue-dialog.tsx: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-863d680c149bd0cb", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/attachment-list.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/attachment-list.tsx: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-92e35f093ef5ef0f", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/project-dashboard/derive.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/project-dashboard/derive.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-28103d2eaa95931a", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/project-dashboard/components/attention-queue.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-dashboard/components/attention-queue.tsx: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-161d955342f14068", "name": "Commented-code block (10 lines) in packages/web-v2/src/features/activity/hooks.ts:5", "shortDescription": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/activity/hooks.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-9bc755a536766ec5", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/activity/types.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/activity/types.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-fdfe8d2e9cd34f05", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/docs/components/docs-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/docs/components/docs-screen.tsx: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-0f677569fb5fba0a", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/hooks.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/hooks.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-a3ba5dce0acf4dcf", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/sessions/types.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/sessions/types.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-94e8f49019452b20", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/sessions/components/fleet-strip.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/sessions/components/fleet-strip.tsx: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-81c324e196aad7c6", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/components/sessions-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/components/sessions-screen.tsx: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-6f5d83b05115d2f6", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/active-org.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/active-org.tsx: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-87038f6d202a69f0", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/orgs/components/org-switcher.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/orgs/components/org-switcher.tsx: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-b2dc0d76c692988c", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/orgs/components/org-home.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/orgs/components/org-home.tsx: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-55557ce12d6c7e3e", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/components/org-members-card.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/components/org-members-card.tsx: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-f8a7d273dbba3e84", "name": "Commented-code block (9 lines) in packages/web-v2/src/features/agents/components/agents-screen.tsx:7", "shortDescription": {"text": "Commented-code block (9 lines) in packages/web-v2/src/features/agents/components/agents-screen.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-566791d91e2db12a", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/api.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/api.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-335f73dae7a502b9", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/hooks.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/hooks.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-ef9f182c63ebe6d8", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/types.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/types.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-3e7fccb5d16cda1d", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/pipeline/components/pipeline-board.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/pipeline/components/pipeline-board.tsx: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-b832ad4cd12f3db4", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/pipeline/components/ops-monitor.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/pipeline/components/ops-monitor.tsx: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-581e0e6472d4f542", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/components/run-detail.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/components/run-detail.tsx: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-546e4296e3157307", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/shell/nav-rail-compact.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/shell/nav-rail-compact.tsx: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-e51eb8a13ecb26ce", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/skills/types.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/skills/types.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-34ca55d587f911c6", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/skills/components/smoke-verify-panel.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/skills/components/smoke-verify-panel.tsx: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-ea423ec0d4a961b8", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/runners/components/project-runners-screen.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/runners/components/project-runners-screen.tsx: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-efcbdc5c2dda29f7", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/session/hooks.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/session/hooks.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-b3f9130e6985bf17", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/session/types.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/session/types.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-36e695f21e84f4a8", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/session/components/context-rail.tsx:116", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/session/components/context-rail.tsx:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cff0178209035ea5", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/conversation-list.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/conversation-list.tsx: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-ed725f1054b0444f", "name": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/chat-screen.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/chat-screen.tsx: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-e151040d842ab7b3", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/types.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/types.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-f62c39dba0075585", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/members-tab.tsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/members-tab.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20ea47286b62452e", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/integrations-tab.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/integrations-tab.tsx: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-90c1489c7d70f3ef", "name": "Commented-code block (10 lines) in packages/web-v2/src/features/project-settings/components/session-groups-section.tsx:9", "shortDescription": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/project-settings/components/session-groups-section.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7d6c34adcb3e4a0", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/testing-tab.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/testing-tab.tsx: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-a3805876c4160b61", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/mcp-servers-section.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/mcp-servers-section.tsx: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-e37d919f540e1885", "name": "Commented-code block (8 lines) in packages/web-v2/src/features/project-settings/components/advanced-tab.tsx:15", "shortDescription": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/project-settings/components/advanced-tab.tsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa822cf5d1863289", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/project-settings-screen.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/project-settings-screen.tsx: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-dfd135b8ece3fd11", "name": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/pipeline-tab.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/pipeline-tab.tsx: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-ceabefc745a22b32", "name": "Commented-code block (10 lines) in packages/web-v2/src/features/overview/components/overview-screen.tsx:3", "shortDescription": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/overview/components/overview-screen.tsx: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-53e5f9bfbab25581", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/activity-feed.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/activity-feed.tsx: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-515b528a66391da7", "name": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/attention-panel.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/attention-panel.tsx: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-32b6c0b306d40270", "name": "Legacy-named symbol `msg_old` in packages/tests/web/hooks/agent-reducer.test.ts:188", "shortDescription": {"text": "Legacy-named symbol `msg_old` in packages/tests/web/hooks/agent-reducer.test.ts:188"}, "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-7eeb226f9f9ceb74", "name": "Legacy-named symbol `toLegacy` in packages/tests/web/features/activity/api/activity-api.test.ts:4", "shortDescription": {"text": "Legacy-named symbol `toLegacy` in packages/tests/web/features/activity/api/activity-api.test.ts:4"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-726c4a1eaa9ff9f0", "name": "Commented-code block (6 lines) in packages/tests/web/features/pipeline/session-groups-config.test.ts:10", "shortDescription": {"text": "Commented-code block (6 lines) in packages/tests/web/features/pipeline/session-groups-config.test.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-236e89f46f448d9a", "name": "Commented-code block (6 lines) in packages/tests/dev/stores/auth-store.test.ts:496", "shortDescription": {"text": "Commented-code block (6 lines) in packages/tests/dev/stores/auth-store.test.ts:496"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-540950f353405780", "name": "Commented-code block (6 lines) in packages/dev/vitest.config.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in packages/dev/vitest.config.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-160679ba80714bbf", "name": "Commented-code block (8 lines) in packages/dev/src/test-setup.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/dev/src/test-setup.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-4d9edc038f844801", "name": "Commented-code block (6 lines) in packages/dev/src/stores/auth-store.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in packages/dev/src/stores/auth-store.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-ff6de034913a1b54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/pairing.ts:157", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/pairing.ts:157"}, "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-b28ba75b30ac71d2", "name": "Commented-code block (8 lines) in packages/dev/src/lib/sentry.ts:4", "shortDescription": {"text": "Commented-code block (8 lines) in packages/dev/src/lib/sentry.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8c57a2d412f9dce", "name": "Commented-code block (5 lines) in packages/dev/src/lib/job-event-mapper.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/job-event-mapper.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-f106ebf859837c34", "name": "Commented-code block (5 lines) in packages/dev/src/lib/skill-sync.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/skill-sync.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c767399925f8da0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/jobs.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/jobs.ts:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4481b13c133ab0c", "name": "Commented-code block (5 lines) in packages/dev/src/lib/api/tasks.ts:20", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/api/tasks.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-33afa472cf5688e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/misc.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/misc.ts:105"}, "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-6b37dc7c7edd6ca9", "name": "Commented-code block (7 lines) in packages/dev/src/lib/api/client.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/dev/src/lib/api/client.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-5dcc61b714c23a6e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/client.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/client.ts:35"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-18919440d66ee82d", "name": "Commented-code block (6 lines) in packages/dev/src/pages/app/LoginPage.tsx:90", "shortDescription": {"text": "Commented-code block (6 lines) in packages/dev/src/pages/app/LoginPage.tsx:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ef70f8d48b93182", "name": "Commented-code block (5 lines) in packages/dev/src/pages/app/Settings.tsx:262", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/pages/app/Settings.tsx:262"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e340fc10811624cb", "name": "Commented-code block (11 lines) in packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45", "shortDescription": {"text": "Commented-code block (11 lines) in packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2ee2ca157bd5b02", "name": "Commented-code block (5 lines) in packages/dev/src/pages/project/project-settings/useProjectSettings.ts:183", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/pages/project/project-settings/useProjectSettings.ts:183"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04f89da6d3c718ed", "name": "Commented-code block (5 lines) in packages/dev/src/hooks/use-agent-commands.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in packages/dev/src/hooks/use-agent-commands.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee48ee83d01a5828", "name": "Commented-code block (7 lines) in packages/dev/src/hooks/use-web-socket.ts:125", "shortDescription": {"text": "Commented-code block (7 lines) in packages/dev/src/hooks/use-web-socket.ts:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6828c53d471338bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/features/pm/api.ts:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/features/pm/api.ts:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6d2387e99bea4c9", "name": "Commented-code block (7 lines) in packages/core/vitest.integration.config.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/vitest.integration.config.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-1ae958b7a3faf4e5", "name": "Commented-code block (5 lines) in packages/core/tests/integration/dispatch-tick-e2e.test.ts:171", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/dispatch-tick-e2e.test.ts:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07e64c7f62144dcd", "name": "Commented-code block (6 lines) in packages/core/tests/integration/per-state-override-e2e.test.ts:259", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/per-state-override-e2e.test.ts:259"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7369075895a106a", "name": "Commented-code block (6 lines) in packages/core/tests/integration/pipeline-e2e.test.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/pipeline-e2e.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-b664c8dcc92754ea", "name": "Commented-code block (7 lines) in packages/core/tests/integration/org-tier.test.ts:14", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/tests/integration/org-tier.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-863618f54c7e071d", "name": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-per-project-config.test.ts:145", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-per-project-config.test.ts:145"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02ad3a50c6b0d10a", "name": "Commented-code block (6 lines) in packages/core/tests/integration/memory-search.test.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/memory-search.test.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c7ef7d92843a1f6", "name": "Commented-code block (6 lines) in packages/core/tests/integration/idor-tenant-isolation.test.ts:17", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/idor-tenant-isolation.test.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-f6fc447af6a41c93", "name": "Commented-code block (5 lines) in packages/core/tests/integration/builtin-seed.test.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/builtin-seed.test.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8da4ec30b5b3f39", "name": "Commented-code block (5 lines) in packages/core/tests/integration/decomposition-e2e.test.ts:163", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/decomposition-e2e.test.ts:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e84f79f60790f400", "name": "Commented-code block (5 lines) in packages/core/tests/integration/issues-job-history-route.test.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/issues-job-history-route.test.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b530ee0ee0f156f4", "name": "Commented-code block (5 lines) in packages/core/tests/integration/smoke.test.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/smoke.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-3b692a0e0b24f21d", "name": "Commented-code block (11 lines) in packages/core/tests/integration/step-handoff-flow.test.ts:15", "shortDescription": {"text": "Commented-code block (11 lines) in packages/core/tests/integration/step-handoff-flow.test.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b2f827f4d1b617", "name": "Commented-code block (6 lines) in packages/core/tests/integration/budget-check-e2e.test.ts:158", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/budget-check-e2e.test.ts: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-de76d66a7e9a11a8", "name": "Commented-code block (6 lines) in packages/core/tests/integration/dispatcher-gates-e2e.test.ts:352", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/dispatcher-gates-e2e.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-f6f0718a82f55a6f", "name": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-health-e2e.test.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-health-e2e.test.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-532ebe3e26e5335f", "name": "Commented-code block (5 lines) in packages/core/tests/integration/memory-write-get-delete.test.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/memory-write-get-delete.test.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b48a59c23924db02", "name": "Commented-code block (7 lines) in packages/core/tests/integration/health-routes.test.ts:14", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/tests/integration/health-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-e336ef9cf3fd6f9d", "name": "Commented-code block (5 lines) in packages/core/tests/integration/device-runner-e2e.test.ts:25", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/device-runner-e2e.test.ts:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc6358bb49e7ecc5", "name": "Commented-code block (6 lines) in packages/core/tests/integration/memory-live.test.ts:22", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/memory-live.test.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c3d45c618a374ce", "name": "Commented-code block (5 lines) in packages/core/tests/integration/session-group-resume-e2e.test.ts:407", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/session-group-resume-e2e.test.ts:407"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f154fa5487b6957b", "name": "Commented-code block (5 lines) in packages/core/tests/helpers/truncate.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/tests/helpers/truncate.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6cb43f5ab18cae5f", "name": "Commented-code block (7 lines) in packages/core/src/index.ts:270", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/index.ts:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98383a07e826f77a", "name": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/rotation.test.ts:56", "shortDescription": {"text": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/rotation.test.ts:56"}, "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-722157fcb963cfd5", "name": "Commented-code block (7 lines) in packages/core/src/integrations/store.ts:97", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/integrations/store.ts:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0846f467133a118", "name": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/routes.test.ts:444", "shortDescription": {"text": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/routes.test.ts:444"}, "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-df5fd272a78bae70", "name": "Commented-code block (5 lines) in packages/core/src/integrations/routes.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/routes.ts:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4285c204bad2fb4d", "name": "Commented-code block (5 lines) in packages/core/src/integrations/usage-registry.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/usage-registry.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-81d67c3730195a4c", "name": "Commented-code block (6 lines) in packages/core/src/integrations/epodsystem/adapter.ts:205", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/integrations/epodsystem/adapter.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-820561ea24cd233e", "name": "Commented-code block (5 lines) in packages/core/src/integrations/coolify/logs.test.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/coolify/logs.test.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f93f832a95e3fa1", "name": "Commented-code block (6 lines) in packages/core/src/integrations/coolify/logs.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/integrations/coolify/logs.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fda513015d0b5d1", "name": "Commented-code block (5 lines) in packages/core/src/usage-records/pricing.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/usage-records/pricing.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-909a9c2aca6a776a", "name": "Commented-code block (5 lines) in packages/core/src/prompt/system.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/prompt/system.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-34c724e5cc1e543c", "name": "Commented-code block (8 lines) in packages/core/src/prompt/facts/registry.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/prompt/facts/registry.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-a8c50a7f1160bbe0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/prompt/facts/registry.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/prompt/facts/registry.ts:69"}, "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-366b06e3e4236e5d", "name": "Commented-code block (6 lines) in packages/core/src/prompt/facts/resolve.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/prompt/facts/resolve.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-2f794fbe52aec1e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/install/fetch-release.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/install/fetch-release.ts:78"}, "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-62d1cea94d97e208", "name": "Commented-code block (5 lines) in packages/core/src/notifications/routes.ts:185", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/notifications/routes.ts:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb12c2dc62121583", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pm/routes.test.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pm/routes.test.ts:112"}, "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-79252e55e1499bf9", "name": "Commented-code block (5 lines) in packages/core/src/config/env.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/config/env.ts:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-037127a8752de4d5", "name": "Commented-code block (5 lines) in packages/core/src/auth/email.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/auth/email.ts:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18b915cea30b67ce", "name": "Commented-code block (5 lines) in packages/core/src/auth/register.ts:40", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/auth/register.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a73b4a26d0ed6183", "name": "Commented-code block (6 lines) in packages/core/src/auth/logout.ts:14", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/auth/logout.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-7c0e0928709298ef", "name": "Commented-code block (7 lines) in packages/core/src/auth/desktop/pairing-routes.ts:347", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/auth/desktop/pairing-routes.ts:347"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acb8574daf7560cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/github.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/github.ts:52"}, "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-ddc78ea399ff7fd8", "name": "Commented-code block (5 lines) in packages/core/src/auth/oauth/handler.ts:251", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/auth/oauth/handler.ts:251"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1020448e3d1bcc23", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/oidc-discovery.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/oidc-discovery.ts:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91c01f3fdeb2f1f4", "name": "Commented-code block (5 lines) in packages/core/src/middleware/error.ts:38", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/middleware/error.ts:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99f27c425a9419b0", "name": "Commented-code block (5 lines) in packages/core/src/projects/project-facts.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/projects/project-facts.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85ffeeb0e294b98e", "name": "Commented-code block (8 lines) in packages/core/src/projects/health-routes.test.ts:245", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/projects/health-routes.test.ts:245"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6bfad1e4dd8ab62", "name": "Commented-code block (5 lines) in packages/core/src/projects/routes.ts:176", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/projects/routes.ts:176"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-622ad2ca2cd7ba4a", "name": "Commented-code block (5 lines) in packages/core/src/projects/health-routes.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/projects/health-routes.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6961a128c231b7be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/projects/health-routes.ts:234", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/projects/health-routes.ts:234"}, "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-1b0bd89d7596a4b0", "name": "Commented-code block (5 lines) in packages/core/src/projects/state-context.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/projects/state-context.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb42208cd6b0016f", "name": "Commented-code block (8 lines) in packages/core/src/issues/decompose.ts:456", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/issues/decompose.ts:456"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc858173bc595681", "name": "Commented-code block (6 lines) in packages/core/src/issues/extras-routes-batch.test.ts:44", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/issues/extras-routes-batch.test.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b513300b9fa579ec", "name": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.test.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.test.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bda112ef882af5d", "name": "Commented-code block (5 lines) in packages/core/src/issues/routes.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/issues/routes.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d393be021b0db03", "name": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27acc468ff7cc072", "name": "Commented-code block (7 lines) in packages/core/src/mcp/server.ts:35", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/mcp/server.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-065af5dfcfcdc850", "name": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-projects.ts:204", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-projects.ts:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f25532458c12d0f6", "name": "Commented-code block (9 lines) in packages/core/src/mcp/tools/forge-jobs.ts:34", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core/src/mcp/tools/forge-jobs.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-5d5a468e65b523ed", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-issues.ts:80", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-issues.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-850037eb3d363d35", "name": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-comments.ts:292", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-comments.ts:292"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41b6fd21f274cb5b", "name": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-issues.test.ts:1060", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-issues.test.ts:1060"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-422b5bc684631828", "name": "Commented-code block (10 lines) in packages/core/src/mcp/tools/forge-project-pm.test.ts:215", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core/src/mcp/tools/forge-project-pm.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-293e91704aa6ad39", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.test.ts:192", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.test.ts:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a1b7db9a9435280a", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.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-f6cb2f1fa314fa19", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bf624e48005f3fb", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-metrics.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-metrics.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-c53325d6c3297ab4", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.test.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.test.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-e382730aff17ac23", "name": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-projects.test.ts:763", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-projects.test.ts:763"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb59ff095e93b105", "name": "Commented-code block (5 lines) in packages/core/src/chat/routes.test.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/chat/routes.test.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-268be99b4994fb50", "name": "Commented-code block (9 lines) in packages/core/src/ws/broadcast-subscribers.ts:104", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core/src/ws/broadcast-subscribers.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-d93f64f19aac3d66", "name": "Commented-code block (5 lines) in packages/core/src/ws/server.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/ws/server.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f4e084d51bfcff1", "name": "Commented-code block (6 lines) in packages/core/src/observability/sentry.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/observability/sentry.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-490a798b1547990a", "name": "Commented-code block (5 lines) in packages/core/src/lib/feature-flags.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/lib/feature-flags.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28fb9d8afa530bd4", "name": "Commented-code block (5 lines) in packages/core/src/knowledge-edges/routes.ts:89", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/knowledge-edges/routes.ts:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4476bedbea148f03", "name": "Commented-code block (7 lines) in packages/core/src/domain-templates/apply.ts:57", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/domain-templates/apply.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-677e45bc4ce2b9ec", "name": "Commented-code block (6 lines) in packages/core/src/agent-sessions/broadcast.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/broadcast.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-089b4f60c72bfaed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/agent-sessions/lifecycle-routes.test.ts:146", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/agent-sessions/lifecycle-routes.test.ts:146"}, "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-03755c56999bc7d2", "name": "Commented-code block (5 lines) in packages/core/src/agent-sessions/routes.test.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/agent-sessions/routes.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-4c0216a3c5819376", "name": "Commented-code block (6 lines) in packages/core/src/agent-sessions/pipeline-control-types.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/pipeline-control-types.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17daa78283d536a4", "name": "Commented-code block (6 lines) in packages/core/src/agent-sessions/chat-turn.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/chat-turn.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-047defcce7322426", "name": "Commented-code block (8 lines) in packages/core/src/agent-sessions/routes.ts:185", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/agent-sessions/routes.ts:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09069c4d4e776608", "name": "Commented-code block (5 lines) in packages/core/src/agent-sessions/chat-turn.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/agent-sessions/chat-turn.test.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-0e5b7b54453d23d9", "name": "Commented-code block (5 lines) in packages/core/src/admin/routes.ts:192", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/admin/routes.ts:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b12d02182ba441d8", "name": "Commented-code block (8 lines) in packages/core/src/memory/indexer.ts:330", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/memory/indexer.ts:330"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d9eb9b3cfba9bc1", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/ci-fix-pattern-learn.test.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/ci-fix-pattern-learn.test.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d16222587330042", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.test.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.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-fea4e11ec725be7f", "name": "Commented-code block (7 lines) in packages/core/src/pipeline/registry.ts:15", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/registry.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ac2bbebb6103a41", "name": "Commented-code block (7 lines) in packages/core/src/pipeline/pipeline-config-service.test.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/pipeline-config-service.test.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-167bd660c34408a0", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/release-coolify.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/release-coolify.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-1a02e56cd4eb420d", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/pipeline-config-schema.ts:201", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/pipeline-config-schema.ts:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e5900bdce148d5d", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/mcp-catalog.test.ts:76", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/mcp-catalog.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-8c53dd24eab2bf10", "name": "Commented-code block (11 lines) in packages/core/src/pipeline/state-machine.test.ts:262", "shortDescription": {"text": "Commented-code block (11 lines) in packages/core/src/pipeline/state-machine.test.ts:262"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8681558fadb9d2e6", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/hooks.ts:115", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/hooks.ts:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-012d8fcbf384266c", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/runs-read-routes.test.ts:20", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/runs-read-routes.test.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-1129dc14917f5aa2", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/decomposition-subscribers.test.ts:199", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/decomposition-subscribers.test.ts:199"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de1e3d50deb3673b", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.ts:166", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.ts:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8054cebe4de67c6", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/sweeper.ts:109", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/sweeper.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd0fd4cf7e8603e6", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.ts:287", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.ts:287"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2da31bceab94038d", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/missing-skill-backfill.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/missing-skill-backfill.test.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-0cf0143b63fceb33", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/failure-classifier.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/failure-classifier.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d46e7a23d26f5fc", "name": "Commented-code block (7 lines) in packages/core/src/pipeline/runs-cascade.ts:94", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/runs-cascade.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75f8973655c85327", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/state-machine.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/state-machine.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d049fbcee1454792", "name": "Commented-code block (9 lines) in packages/core/src/pipeline/pipeline-config-service.ts:134", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core/src/pipeline/pipeline-config-service.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dee1418f5106bd0", "name": "Commented-code block (6 lines) in packages/core/src/pipeline/outbox-worker.test.ts:18", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/outbox-worker.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-9037c5b1e9617ce0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/registry.test.ts:179", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/registry.test.ts:179"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b13a1cfb667c4a65", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/analytics-routes.test.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/analytics-routes.test.ts:96"}, "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-47f37cb5eabe5820", "name": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.test.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.test.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58f70ddc5aeb492e", "name": "Commented-code block (6 lines) in packages/core/src/db/schema.ts:107", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/db/schema.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98fc8b6d779cace4", "name": "Commented-code block (8 lines) in packages/core/src/metrics/queries.ts:305", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/metrics/queries.ts:305"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93ce2958d157e0c1", "name": "Commented-code block (5 lines) in packages/core/src/schedules/routes.tick.test.ts:9", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/schedules/routes.tick.test.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19007296345ad6e8", "name": "Commented-code block (5 lines) in packages/core/src/schedules/routes.ts:29", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/schedules/routes.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cad49607a7b6cb23", "name": "Commented-code block (6 lines) in packages/core/src/schedules/dispatch.ts:36", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/schedules/dispatch.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da291b3c14a07e43", "name": "Commented-code block (9 lines) in packages/core/src/skills/studio-routes.ts:39", "shortDescription": {"text": "Commented-code block (9 lines) in packages/core/src/skills/studio-routes.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-e1fdd0b6b93f5fb7", "name": "Commented-code block (5 lines) in packages/core/src/skills/builtin-seed.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/skills/builtin-seed.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-214665f93b56c4a8", "name": "Commented-code block (5 lines) in packages/core/src/skills/routes.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/skills/routes.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cf48ae1b9de1851", "name": "Commented-code block (5 lines) in packages/core/src/skills/effective.ts:303", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/skills/effective.ts:303"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18c7e1b2ba129081", "name": "Commented-code block (6 lines) in packages/core/src/runners/stale-detector.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/runners/stale-detector.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3fbf46f0e94d21e", "name": "Commented-code block (5 lines) in packages/core/src/runners/select.ts:197", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/runners/select.ts:197"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1570e4cfc67f3153", "name": "Commented-code block (5 lines) in packages/core/src/runners/routes.ts:377", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/runners/routes.ts:377"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d62a3bec04e9d16f", "name": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.test.ts:241", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.test.ts:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccc9b2b2a2a002b2", "name": "Commented-code block (5 lines) in packages/core/src/jobs/agent-session-link.ts:137", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/agent-session-link.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c261e8abdca91d18", "name": "Commented-code block (7 lines) in packages/core/src/jobs/finalize-failure.ts:177", "shortDescription": {"text": "Commented-code block (7 lines) in packages/core/src/jobs/finalize-failure.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-21a85a7a1d62d80f", "name": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.ts:286", "shortDescription": {"text": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.ts:286"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-687b295c27404346", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/events-routes.test.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/events-routes.test.ts:125"}, "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-97d94f3061d21586", "name": "Commented-code block (5 lines) in packages/core/src/jobs/retry.ts:268", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/retry.ts:268"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-789915654de5b017", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/lifecycle-routes.test.ts:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/lifecycle-routes.test.ts:161"}, "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-63e8a05d2b71ae44", "name": "Commented-code block (6 lines) in packages/core/src/jobs/session-resume.test.ts:79", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/jobs/session-resume.test.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53fecb37563f26cc", "name": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35cbd1a5d02e1e33", "name": "Commented-code block (8 lines) in packages/core/src/jobs/dispatch-tick.ts:100", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/jobs/dispatch-tick.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c313971ff267cf3e", "name": "Commented-code block (5 lines) in packages/core/src/jobs/lifecycle-routes.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/lifecycle-routes.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-76161f3d08de2f95", "name": "Commented-code block (5 lines) in packages/core/src/jobs/events-routes.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/events-routes.ts:178"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45f7244904c9ade2", "name": "Commented-code block (5 lines) in packages/core/src/jobs/dispatch-tick.test.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatch-tick.test.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f93bba4c420eabc0", "name": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-462f068c8aac58dc", "name": "Commented-code block (5 lines) in packages/core/src/jobs/enqueue.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/enqueue.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b152b7dd96b5b09", "name": "Commented-code block (6 lines) in packages/core/src/jobs/loop-monitor.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in packages/core/src/jobs/loop-monitor.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-1ab6fb98d77d53a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/outbound.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/outbound.ts:58"}, "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-22d5f583e67683d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/inbound-routes.test.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/inbound-routes.test.ts:49"}, "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-75145f78fd93ac3d", "name": "Commented-code block (5 lines) in packages/core/src/devices/skills-routes.ts:19", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/devices/skills-routes.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-355e541ad2063cc6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/devices/routes.test.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/devices/routes.test.ts:158"}, "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-d8834116f3abee35", "name": "Commented-code block (8 lines) in packages/core/src/devices/routes.ts:113", "shortDescription": {"text": "Commented-code block (8 lines) in packages/core/src/devices/routes.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd86cc202495ff53", "name": "Commented-code block (5 lines) in packages/core/src/comments/tree.ts:28", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/comments/tree.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d543070d7a775a06", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/comments/tree.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/comments/tree.ts:31"}, "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-197b5c8eb15a5ab3", "name": "Commented-code block (5 lines) in packages/core/src/comments/routes.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in packages/core/src/comments/routes.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-4e8cdaf038339b5a", "name": "Commented-code block (7 lines) in packages/contracts/src/issues.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/contracts/src/issues.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-4d6fe82d01f06210", "name": "Commented-code block (6 lines) in packages/contracts/src/skill-facts.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/contracts/src/skill-facts.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-f568ca26092bafe1", "name": "Commented-code block (9 lines) in packages/contracts/src/integrations.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in packages/contracts/src/integrations.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-11fc253b11bdc89b", "name": "Commented-code block (5 lines) in packages/contracts/src/responses.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in packages/contracts/src/responses.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8398c811d73074d7", "name": "Commented-code block (6 lines) in packages/contracts/src/pipeline-registry.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/contracts/src/pipeline-registry.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-59b992d62d86a65a", "name": "25 env vars used in code but missing from .env.example", "shortDescription": {"text": "25 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CORE_PUBLIC_URL`, `DEV`, `DEVICE_FAILURE_STREAK`, `DEVICE_PRUNE_DAYS`, `DEVICE_TRIP_WINDOW_MS`, `DISPATCH_LIVENESS_MS`, `E2E_CORE_PROXY_URL`, `FEATURE_CHAT_PROVIDER` + 17 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-0cf07f683245df28", "name": "Frontend route `/preview` has no Link/navigate to it \u2014 packages/dev/src/App.tsx", "shortDescription": {"text": "Frontend route `/preview` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80334de2180e8bf3", "name": "Frontend route `/project/:slug` has no Link/navigate to it \u2014 packages/dev/src/App.tsx", "shortDescription": {"text": "Frontend route `/project/:slug` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749a4789639ad68b", "name": "Frontend route `issues/new` has no Link/navigate to it \u2014 packages/dev/src/App.tsx", "shortDescription": {"text": "Frontend route `issues/new` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9fc6c07b2a0e3b0d", "name": "Frontend route `pipeline` has no Link/navigate to it \u2014 packages/dev/src/App.tsx", "shortDescription": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6bfaf779aa005f42", "name": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:46)", "shortDescription": {"text": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:46)"}, "fullDescription": {"text": "`packages/tests/dev/lib/api-client-state-machine.test.ts:46` calls `GET /anything` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/anything`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41556c6cf96391ae", "name": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:52)", "shortDescription": {"text": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:52)"}, "fullDescription": {"text": "`packages/tests/dev/lib/api-client-state-machine.test.ts:52` calls `GET /anything` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/anything`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba5bf87018adb26d", "name": "Dangling fetch: GET /ping (packages/tests/dev/lib/api-client-state-machine.test.ts:58)", "shortDescription": {"text": "Dangling fetch: GET /ping (packages/tests/dev/lib/api-client-state-machine.test.ts:58)"}, "fullDescription": {"text": "`packages/tests/dev/lib/api-client-state-machine.test.ts:58` calls `GET /ping` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ping`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f2db4073a3392db", "name": "Dangling fetch: GET /a (packages/tests/dev/lib/api-client-state-machine.test.ts:74)", "shortDescription": {"text": "Dangling fetch: GET /a (packages/tests/dev/lib/api-client-state-machine.test.ts:74)"}, "fullDescription": {"text": "`packages/tests/dev/lib/api-client-state-machine.test.ts:74` calls `GET /a` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/a`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2d1757cb7ce0302", "name": "Dangling fetch: GET /b (packages/tests/dev/lib/api-client-state-machine.test.ts:81)", "shortDescription": {"text": "Dangling fetch: GET /b (packages/tests/dev/lib/api-client-state-machine.test.ts:81)"}, "fullDescription": {"text": "`packages/tests/dev/lib/api-client-state-machine.test.ts:81` calls `GET /b` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/b`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a417288c4f56ad0", "name": "Dangling fetch: GET /projects/${projectId}/skills/effective (packages/dev/src/lib/skill-sync.ts:50)", "shortDescription": {"text": "Dangling fetch: GET /projects/${projectId}/skills/effective (packages/dev/src/lib/skill-sync.ts:50)"}, "fullDescription": {"text": "`packages/dev/src/lib/skill-sync.ts:50` calls `GET /projects/${projectId}/skills/effective` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/effective`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a5ac129cd998da6", "name": "Dangling fetch: POST /issues/${documentId}/enrich (packages/dev/src/lib/api/issues.ts:128)", "shortDescription": {"text": "Dangling fetch: POST /issues/${documentId}/enrich (packages/dev/src/lib/api/issues.ts:128)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/issues.ts:128` calls `POST /issues/${documentId}/enrich` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/enrich`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92d4550cb660ee9b", "name": "Dangling fetch: GET /issues/${documentId}/cost-summary (packages/dev/src/lib/api/issues.ts:147)", "shortDescription": {"text": "Dangling fetch: GET /issues/${documentId}/cost-summary (packages/dev/src/lib/api/issues.ts:147)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/issues.ts:147` calls `GET /issues/${documentId}/cost-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: `/issues/<p>/cost-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-1cbb4858c6d6dd82", "name": "Dangling fetch: POST /agent-sessions/start (packages/dev/src/lib/api/agent-sessions.ts:45)", "shortDescription": {"text": "Dangling fetch: POST /agent-sessions/start (packages/dev/src/lib/api/agent-sessions.ts:45)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/agent-sessions.ts:45` calls `POST /agent-sessions/start` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/start`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e3fd7702a9ff1db", "name": "Dangling fetch: POST /agent-sessions/send (packages/dev/src/lib/api/agent-sessions.ts:56)", "shortDescription": {"text": "Dangling fetch: POST /agent-sessions/send (packages/dev/src/lib/api/agent-sessions.ts:56)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/agent-sessions.ts:56` calls `POST /agent-sessions/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: `/agent-sessions/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-85da46b21b3e802a", "name": "Dangling fetch: PATCH /agent-sessions/${sessionId} (packages/dev/src/lib/api/agent-sessions.ts:83)", "shortDescription": {"text": "Dangling fetch: PATCH /agent-sessions/${sessionId} (packages/dev/src/lib/api/agent-sessions.ts:83)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/agent-sessions.ts:83` calls `PATCH /agent-sessions/${sessionId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-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-62522492e711811b", "name": "Dangling fetch: POST /agent-sessions/${sessionId}/relay (packages/dev/src/lib/api/agent-sessions.ts:94)", "shortDescription": {"text": "Dangling fetch: POST /agent-sessions/${sessionId}/relay (packages/dev/src/lib/api/agent-sessions.ts:94)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/agent-sessions.ts:94` calls `POST /agent-sessions/${sessionId}/relay` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/relay`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e142d10fe83c5e68", "name": "Dangling fetch: POST /agent-sessions/prompt-built (packages/dev/src/lib/api/agent-sessions.ts:105)", "shortDescription": {"text": "Dangling fetch: POST /agent-sessions/prompt-built (packages/dev/src/lib/api/agent-sessions.ts:105)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/agent-sessions.ts:105` calls `POST /agent-sessions/prompt-built` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/prompt-built`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e113ecd907c939bd", "name": "Dangling fetch: GET /issues/${issueId}/tasks (packages/dev/src/lib/api/tasks.ts:26)", "shortDescription": {"text": "Dangling fetch: GET /issues/${issueId}/tasks (packages/dev/src/lib/api/tasks.ts:26)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/tasks.ts:26` calls `GET /issues/${issueId}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bdfd20b28ca1f046", "name": "Dangling fetch: PATCH /tasks/${taskId} (packages/dev/src/lib/api/tasks.ts:34)", "shortDescription": {"text": "Dangling fetch: PATCH /tasks/${taskId} (packages/dev/src/lib/api/tasks.ts:34)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/tasks.ts:34` calls `PATCH /tasks/${taskId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tasks/<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-4f0ea6b23c8d4685", "name": "Dangling fetch: GET /notifications (packages/dev/src/lib/api/misc.ts:57)", "shortDescription": {"text": "Dangling fetch: GET /notifications (packages/dev/src/lib/api/misc.ts:57)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/misc.ts:57` calls `GET /notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfe24bbee1275194", "name": "Dangling fetch: GET /notifications/unread-count (packages/dev/src/lib/api/misc.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /notifications/unread-count (packages/dev/src/lib/api/misc.ts:61)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/misc.ts:61` calls `GET /notifications/unread-count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications/unread-count`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-832eae563901f2c9", "name": "Dangling fetch: PATCH /notifications/${id} (packages/dev/src/lib/api/misc.ts:66)", "shortDescription": {"text": "Dangling fetch: PATCH /notifications/${id} (packages/dev/src/lib/api/misc.ts:66)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/misc.ts:66` calls `PATCH /notifications/${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: `/notifications/<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-15816dab8bf2ae2a", "name": "Dangling fetch: POST /notifications/mark-all-read (packages/dev/src/lib/api/misc.ts:73)", "shortDescription": {"text": "Dangling fetch: POST /notifications/mark-all-read (packages/dev/src/lib/api/misc.ts:73)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/misc.ts:73` calls `POST /notifications/mark-all-read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications/mark-all-read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f60c8915cc651e9", "name": "Dangling fetch: DELETE /comments/${documentId} (packages/dev/src/lib/api/comments.ts:42)", "shortDescription": {"text": "Dangling fetch: DELETE /comments/${documentId} (packages/dev/src/lib/api/comments.ts:42)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/comments.ts:42` calls `DELETE /comments/${documentId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<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-78b1b865435c35db", "name": "Dangling fetch: GET /usage-records/summary?projectId=${projectId}&days=${days} (packages/dev/src/lib/api/usage.ts:5)", "shortDescription": {"text": "Dangling fetch: GET /usage-records/summary?projectId=${projectId}&days=${days} (packages/dev/src/lib/api/usage.ts:5)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/usage.ts:5` calls `GET /usage-records/summary?projectId=${projectId}&days=${days}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records/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-0093ff985d9658f1", "name": "Dangling fetch: POST /usage-records (packages/dev/src/lib/api/usage.ts:9)", "shortDescription": {"text": "Dangling fetch: POST /usage-records (packages/dev/src/lib/api/usage.ts:9)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/usage.ts:9` calls `POST /usage-records` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6d2b12a893ce6c8", "name": "Dangling fetch: POST /usage-records/ingest-cli (packages/dev/src/lib/api/usage.ts:16)", "shortDescription": {"text": "Dangling fetch: POST /usage-records/ingest-cli (packages/dev/src/lib/api/usage.ts:16)"}, "fullDescription": {"text": "`packages/dev/src/lib/api/usage.ts:16` calls `POST /usage-records/ingest-cli` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records/ingest-cli`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb3f3bc5050f7e73", "name": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/per-state-override-e2e", "shortDescription": {"text": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/per-state-override-e2e.test.ts:138)"}, "fullDescription": {"text": "`packages/core/tests/integration/per-state-override-e2e.test.ts:138` calls `PATCH /api/projects/${projectId}/pipeline-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pipeline-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dabcc4715a3aa3fc", "name": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:246)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:246)"}, "fullDescription": {"text": "`packages/core/tests/integration/per-state-override-e2e.test.ts:246` calls `GET /api/jobs/${jobId}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3361fcc22a96342", "name": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:336)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:336)"}, "fullDescription": {"text": "`packages/core/tests/integration/per-state-override-e2e.test.ts:336` calls `GET /api/jobs/${jobId2}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9aa267455901775b", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:114)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:114)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:114` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-b1da33dd03b358a1", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:130)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:130` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-feed301064951ee2", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:143)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:143)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:143` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-3756203cadcc0d6b", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:180)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:180)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:180` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-befef2859154e3d2", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:221)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:221)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:221` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-a8ce287179d75dfb", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:253)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:253)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:253` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-8f034c7ffc39b2ad", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:279)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:279)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-search.test.ts:279` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-ad37671a91e6e587", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:125)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:125)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:125` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8fcd73da1a2e5e8", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:149)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:149)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:149` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec3732cc94e96670", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:157)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:157)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:157` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96253f46e7893780", "name": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:172)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:172)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:172` calls `POST /api/issues/${a}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75fd403c5a00eef2", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:189)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:189)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:189` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f1190eb68215b61", "name": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:197)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:197)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:197` calls `POST /api/issues/${a}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0478035d53379972", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:215)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:215)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:215` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90f0508636159a49", "name": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:221)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:221)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:221` calls `POST /api/issues/${c}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e6e71066405d4d8", "name": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:228)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:228)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:228` calls `POST /api/issues/${a}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7e6ece187251a04", "name": "Dangling fetch: POST /api/issues/${issB}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:250", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${issB}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:250)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:250` calls `POST /api/issues/${issB}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b40846f246afa14", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:269)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:269)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:269` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90005ab509cbee8c", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:283)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:283)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:283` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6d0720b0ff210a9", "name": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:289)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:289)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:289` calls `POST /api/issues/${a}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cae3befe491af743", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:309)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:309)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:309` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25e87066f0769563", "name": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:315)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:315)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:315` calls `POST /api/issues/${c}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfc0c6c9c14ccca0", "name": "Dangling fetch: GET /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:321)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:321)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:321` calls `GET /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7675b70d97136050", "name": "Dangling fetch: GET /api/issues/${randomUUID()}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${randomUUID()}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:341)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:341` calls `GET /api/issues/${randomUUID()}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b77fc003b5043df0", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:358)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:358)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:358` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71236dcd1d585c6b", "name": "Dangling fetch: DELETE /api/issues/${b}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/issues/${b}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.test.ts:365)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:365` calls `DELETE /api/issues/${b}/dependencies/${edgeId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies/<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-ca948f5277f2c2d6", "name": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:384)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:384)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:384` calls `POST /api/issues/${b}/dependencies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-769f263e6d9847ae", "name": "Dangling fetch: DELETE /api/issues/${c}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/issues/${c}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.test.ts:391)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:391` calls `DELETE /api/issues/${c}/dependencies/${edgeId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies/<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-63be318a441dc555", "name": "Dangling fetch: DELETE /api/issues/${a}/dependencies/${randomUUID()} (packages/core/tests/integration/dependency-routes-", "shortDescription": {"text": "Dangling fetch: DELETE /api/issues/${a}/dependencies/${randomUUID()} (packages/core/tests/integration/dependency-routes-e2e.test.ts:404)"}, "fullDescription": {"text": "`packages/core/tests/integration/dependency-routes-e2e.test.ts:404` calls `DELETE /api/issues/${a}/dependencies/${randomUUID()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/dependencies/<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-e20467a6bbfc34d4", "name": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=${step} (packages/core/tests/integration/issues-job-history-", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=${step} (packages/core/tests/integration/issues-job-history-route.test.ts:142)"}, "fullDescription": {"text": "`packages/core/tests/integration/issues-job-history-route.test.ts:142` calls `GET /api/issues/${issueId}/job-history?step=${step}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/job-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-a5b6af0fd574e297", "name": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=bogus (packages/core/tests/integration/issues-job-history-ro", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=bogus (packages/core/tests/integration/issues-job-history-route.test.ts:272)"}, "fullDescription": {"text": "`packages/core/tests/integration/issues-job-history-route.test.ts:272` calls `GET /api/issues/${issueId}/job-history?step=bogus` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/job-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-07ebe95470c1cc5f", "name": "Dangling fetch: POST /api/issue-step-contexts (packages/core/tests/integration/step-handoff-flow.test.ts:188)", "shortDescription": {"text": "Dangling fetch: POST /api/issue-step-contexts (packages/core/tests/integration/step-handoff-flow.test.ts:188)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:188` calls `POST /api/issue-step-contexts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issue-step-contexts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20cfc8490c5f2933", "name": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:210)", "shortDescription": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:210)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:210` calls `POST /api/jobs/${jobId}/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: `/jobs/<p>/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-7a96f5137dd6ff61", "name": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:240)", "shortDescription": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:240)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:240` calls `POST /api/jobs/${jobId}/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: `/jobs/<p>/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-c761f420efdfb5df", "name": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:267)", "shortDescription": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:267)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:267` calls `POST /api/jobs/${jobId}/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: `/jobs/<p>/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-a3ccbb6b74d65ead", "name": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:296)", "shortDescription": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:296)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:296` calls `POST /api/jobs/${jobId}/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: `/jobs/<p>/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-5f5b8d511e523e5a", "name": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:336)", "shortDescription": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:336)"}, "fullDescription": {"text": "`packages/core/tests/integration/step-handoff-flow.test.ts:336` calls `POST /api/jobs/${jobId}/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: `/jobs/<p>/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-20ce94bcb6171b3a", "name": "Dangling fetch: POST /api/issues/${issueId}/comments (packages/core/tests/integration/comment-mentions.test.ts:109)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${issueId}/comments (packages/core/tests/integration/comment-mentions.test.ts:109)"}, "fullDescription": {"text": "`packages/core/tests/integration/comment-mentions.test.ts:109` calls `POST /api/issues/${issueId}/comments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/comments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0bfb9b77e824279c", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:131)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:131)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:131` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-116f60391db57afe", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:152)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:152)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:152` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad13ea9d013147d4", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:170)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:170)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:170` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-749ab2f1221b83e4", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:185)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:185)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:185` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f65354531b137a68", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:201)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:201)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:201` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e7db5556ce5ae56", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:235)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:235)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:235` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd818f7f2764f77f", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:242)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:242)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:242` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea7f6a6582f36f70", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:262)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:262)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:262` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d2d9e4ca8596b56", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:290)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:290)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:290` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68e68db062e40875", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:325)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:325)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:325` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ef11f720a3d9dd3", "name": "Dangling fetch: GET /api/memory?projectId=${randomUUID()} (packages/core/tests/integration/memory-write-get-delete.test.", "shortDescription": {"text": "Dangling fetch: GET /api/memory?projectId=${randomUUID()} (packages/core/tests/integration/memory-write-get-delete.test.ts:346)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:346` calls `GET /api/memory?projectId=${randomUUID()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fdf4bb3a3fa6357c", "name": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:358)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:358` calls `GET /api/memory?projectId=${projectId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-146f69e9b2fedfc9", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:368)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:368)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:368` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-000cdba7a92cde74", "name": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:384)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:384` calls `GET /api/memory?projectId=${projectId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbfcb5a261984a89", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:397)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:397)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:397` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09553547df2569d5", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:407)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:407)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:407` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc97f69f99c2e8f7", "name": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=knowledge (packages/core/tests/integration/memory-write-ge", "shortDescription": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=knowledge (packages/core/tests/integration/memory-write-get-delete.test.ts:418)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:418` calls `GET /api/memory?projectId=${projectId}&source=knowledge` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b36b6524681eb5b2", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:432)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:432)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:432` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d62d40df673f90fa", "name": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=gone (packages/core/tests/inte", "shortDescription": {"text": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=gone (packages/core/tests/integration/memory-write-get-delete.test.ts:443)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-write-get-delete.test.ts:443` calls `DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=gone` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/by-source`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7838c3862f8f3af8", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:87)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:87)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:87` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac9bf2378487ee3f", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:108)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:108)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:108` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c27359c28b772d8d", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:171)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:171)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:171` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ef306b2f4837a9b", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:176)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:176)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:176` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2e228c99b3a08be", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:198)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:198)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:198` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-564197a9b6d058a3", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:205)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:205)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:205` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b29b98699f20d15", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:229)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:229)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:229` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-186391322f6c37e6", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:240)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:240)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:240` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71067866fcdf28cf", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:265)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:265)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:265` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7747b574bdca8376", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:283)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:283)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:283` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7d3ce006cfafec5", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:312)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:312)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:312` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68b7a7a1c31fba79", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:335)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:335)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:335` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0bc45d07e1b90f62", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:351)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:351)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:351` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26dd773629a478ec", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:381)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:381)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:381` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef27a124f0a75f93", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:415)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:415` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e8e46d7dfa9db08", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:437)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:437` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0cf0d2ab2bfb0e1f", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:459)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:459` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78bea8761af5142c", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:494)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:494` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-967c9c024d68b70e", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:499)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:499` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5104a0e3daa2ba76", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${fakeSkillId}/register (packages/core/tests/integration/skill-r", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${fakeSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:515)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:515` calls `POST /api/projects/${project.id}/skills/${fakeSkillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef66870294be8ffb", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${globalSkillId}/register (packages/core/tests/integration/skill", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${globalSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:533)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:533` calls `POST /api/projects/${project.id}/skills/${globalSkillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88e61ea5e08355e9", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:559)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:559` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32f5fb1413a69415", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:574)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:574` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-985f196acb41e613", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:594)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:594` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-767da13e6ccafa46", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:599)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:599` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d75b767c5b0fa6e2", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:616)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:616)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:616` calls `POST /api/projects/${project.id}/skills/sync` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/sync`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4dd6150693f5c33", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-route", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:635)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:635` calls `POST /api/projects/${project.id}/skills/${skillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb70bf2bb4958a65", "name": "Dangling fetch: POST /api/projects/${project.id}/skills/${foreignSkillId}/register (packages/core/tests/integration/skil", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${foreignSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:653)"}, "fullDescription": {"text": "`packages/core/tests/integration/skill-routes.test.ts:653` calls `POST /api/projects/${project.id}/skills/${foreignSkillId}/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/<p>/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-616c6e3c2406c81a", "name": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:106)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:106)"}, "fullDescription": {"text": "`packages/core/tests/integration/health-routes.test.ts:106` calls `GET /api/projects/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: `/projects/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-d760d74fddd2ee01", "name": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:146)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:146)"}, "fullDescription": {"text": "`packages/core/tests/integration/health-routes.test.ts:146` calls `GET /api/projects/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: `/projects/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-f741db61956688bf", "name": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/tests/integration/health-routes.test.ts:168` calls `GET /api/projects/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: `/projects/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-2ab864ff2943a0df", "name": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:193)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:193)"}, "fullDescription": {"text": "`packages/core/tests/integration/health-routes.test.ts:193` calls `GET /api/projects/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: `/projects/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-19567e4bbdc0ab32", "name": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-live.test.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-live.test.ts:96)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-live.test.ts:96` calls `POST /api/memory` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b942deea7e6c580f", "name": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-live.test.ts:104)", "shortDescription": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-live.test.ts:104)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-live.test.ts:104` calls `POST /api/memory/search` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/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-20c6257b6ade208e", "name": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=to-delete (packages/core/tests", "shortDescription": {"text": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=to-delete (packages/core/tests/integration/memory-live.test.ts:261)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-live.test.ts:261` calls `DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=to-delete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory/by-source`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e874b6057419e4e7", "name": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=step_handoff (packages/core/tests/integration/memory-live.", "shortDescription": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=step_handoff (packages/core/tests/integration/memory-live.test.ts:298)"}, "fullDescription": {"text": "`packages/core/tests/integration/memory-live.test.ts:298` calls `GET /api/memory?projectId=${projectId}&source=step_handoff` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/memory`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8312efb6489860e4", "name": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/session-group-resume-e", "shortDescription": {"text": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/session-group-resume-e2e.test.ts:141)"}, "fullDescription": {"text": "`packages/core/tests/integration/session-group-resume-e2e.test.ts:141` calls `PATCH /api/projects/${projectId}/pipeline-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pipeline-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbe2c59fb855c387", "name": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:374)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:374)"}, "fullDescription": {"text": "`packages/core/tests/integration/session-group-resume-e2e.test.ts:374` calls `GET /api/jobs/${jobId2}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4987eb008864baa9", "name": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:611)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:611)"}, "fullDescription": {"text": "`packages/core/tests/integration/session-group-resume-e2e.test.ts:611` calls `GET /api/jobs/${jobId2}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-672500db4bb65883", "name": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:129)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:129)"}, "fullDescription": {"text": "`packages/core/tests/integration/jobs-prompt-route.test.ts:129` calls `GET /api/jobs/${jobId}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd9c479c21a5f8a7", "name": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:356)", "shortDescription": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:356)"}, "fullDescription": {"text": "`packages/core/tests/integration/jobs-prompt-route.test.ts:356` calls `GET /api/jobs/${jobId}/prompt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/jobs/<p>/prompt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2920c80356865fe6", "name": "Dangling fetch: GET /no-such-route (packages/core/src/index.test.ts:85)", "shortDescription": {"text": "Dangling fetch: GET /no-such-route (packages/core/src/index.test.ts:85)"}, "fullDescription": {"text": "`packages/core/src/index.test.ts:85` calls `GET /no-such-route` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/no-such-route`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10072c96b83c077c", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations (packages/core/src/integrations/routes.test.ts:111)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations (packages/core/src/integrations/routes.test.ts:111)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:111` calls `POST /api/projects/${PROJECT_ID}/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: `/projects/<p>/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-238564b358dfd66f", "name": "Dangling fetch: PATCH /api/projects/${PROJECT_ID}/integrations/${id} (packages/core/src/integrations/routes.test.ts:122)", "shortDescription": {"text": "Dangling fetch: PATCH /api/projects/${PROJECT_ID}/integrations/${id} (packages/core/src/integrations/routes.test.ts:122)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:122` calls `PATCH /api/projects/${PROJECT_ID}/integrations/${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: `/projects/<p>/integrations/<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-b1895b6570e2eda9", "name": "Dangling fetch: PATCH /api/integration-connections/conn-ep (packages/core/src/integrations/routes.test.ts:459)", "shortDescription": {"text": "Dangling fetch: PATCH /api/integration-connections/conn-ep (packages/core/src/integrations/routes.test.ts:459)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:459` calls `PATCH /api/integration-connections/conn-ep` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/integration-connections/conn-ep`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f9ba2a0d22f7e33", "name": "Dangling fetch: POST /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:713)", "shortDescription": {"text": "Dangling fetch: POST /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:713)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:713` calls `POST /api/integration-connections/${id}/bindings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/integration-connections/<p>/bindings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8671f6b696df749f", "name": "Dangling fetch: GET /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:721)", "shortDescription": {"text": "Dangling fetch: GET /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:721)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:721` calls `GET /api/integration-connections/${id}/bindings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/integration-connections/<p>/bindings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dca51846d87a04c3", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations/${id}/deliveries/${deliveryId}/retry (packages/core/src/in", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations/${id}/deliveries/${deliveryId}/retry (packages/core/src/integrations/routes.test.ts:895)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:895` calls `POST /api/projects/${PROJECT_ID}/integrations/${id}/deliveries/${deliveryId}/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: `/projects/<p>/integrations/<p>/deliveries/<p>/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-f287ba6b186fc143", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/integrations/mcp-preview (packages/core/src/integrations/routes.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/integrations/mcp-preview (packages/core/src/integrations/routes.test.ts:1001)"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.test.ts:1001` calls `GET /api/projects/${PROJECT_ID}/integrations/mcp-preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/integrations/mcp-preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-531860cffe558f83", "name": "Dangling fetch: POST /api/integration-connections/${id}/test (packages/core/src/integrations/connection-test-route.test.", "shortDescription": {"text": "Dangling fetch: POST /api/integration-connections/${id}/test (packages/core/src/integrations/connection-test-route.test.ts:121)"}, "fullDescription": {"text": "`packages/core/src/integrations/connection-test-route.test.ts:121` calls `POST /api/integration-connections/${id}/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: `/integration-connections/<p>/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-1913e16ee9cc080b", "name": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:74)", "shortDescription": {"text": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:74)"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.test.ts:74` calls `POST /api/usage-records` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c30ee27460cad9a8", "name": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:89)", "shortDescription": {"text": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:89)"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.test.ts:89` calls `POST /api/usage-records` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef21844af96299cf", "name": "Dangling fetch: POST /api/usage-records/bulk (packages/core/src/usage-records/routes.test.ts:115)", "shortDescription": {"text": "Dangling fetch: POST /api/usage-records/bulk (packages/core/src/usage-records/routes.test.ts:115)"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.test.ts:115` calls `POST /api/usage-records/bulk` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/usage-records/bulk`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-554ec0753a09cae3", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:73)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:73)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:73` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d53f9dbdaf6964ef", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:101)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:101)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:101` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3faa9dab2b6d400", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:127)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:127)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:127` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f403abe0ff9ecb5e", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:152)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:152)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:152` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e0d98ca432616e1", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:168` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c2bb9e3c00e5e6e", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:187)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:187)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:187` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c19bc615f263851", "name": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:216)", "shortDescription": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:216)"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.test.ts:216` calls `POST /api/prompts/preview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/prompts/preview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eebe6b80b4d242fc", "name": "Dangling fetch: GET https://api.github.com/repos/${REPO}/releases?per_page=50 (packages/core/src/install/fetch-release.t", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${REPO}/releases?per_page=50 (packages/core/src/install/fetch-release.ts:78)"}, "fullDescription": {"text": "`packages/core/src/install/fetch-release.ts:78` calls `GET https://api.github.com/repos/${REPO}/releases?per_page=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:/api.github.com/repos/<p>/releases`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c5d8ece042d81588", "name": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:88)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:88)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:88` calls `GET /api/notifications/unread-count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications/unread-count`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2dd6cc2dcbaa8918", "name": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:95)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:95)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:95` calls `GET /api/notifications/unread-count` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications/unread-count`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05fc4b6abe25a026", "name": "Dangling fetch: GET /api/notifications (packages/core/src/notifications/routes.test.ts:110)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications (packages/core/src/notifications/routes.test.ts:110)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:110` calls `GET /api/notifications` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b17ba96f2ad457b2", "name": "Dangling fetch: GET /api/notifications?projectId=not-a-uuid (packages/core/src/notifications/routes.test.ts:120)", "shortDescription": {"text": "Dangling fetch: GET /api/notifications?projectId=not-a-uuid (packages/core/src/notifications/routes.test.ts:120)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:120` calls `GET /api/notifications?projectId=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: `/notifications`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6dc1c6f812c2d7fb", "name": "Dangling fetch: POST /api/notifications/mark-all-read (packages/core/src/notifications/routes.test.ts:131)", "shortDescription": {"text": "Dangling fetch: POST /api/notifications/mark-all-read (packages/core/src/notifications/routes.test.ts:131)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:131` calls `POST /api/notifications/mark-all-read` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/notifications/mark-all-read`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8a09d75b232f6c8", "name": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:151)", "shortDescription": {"text": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:151)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:151` calls `PATCH /api/notifications/${NOTIF_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: `/notifications/<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-826efdfe32d8794a", "name": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:163)", "shortDescription": {"text": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:163)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:163` calls `PATCH /api/notifications/${NOTIF_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: `/notifications/<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-75c2c535a7fab50b", "name": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:176)", "shortDescription": {"text": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:176)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:176` calls `DELETE /api/notifications/${NOTIF_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: `/notifications/<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-1ccea4971d6693bc", "name": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:186)", "shortDescription": {"text": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:186)"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.test.ts:186` calls `DELETE /api/notifications/${NOTIF_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: `/notifications/<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-2b5c5fd78fd35eed", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:145)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:145)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:145` calls `GET /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9914f61560e55d61", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:159)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:159)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:159` calls `GET /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2cc8bab4c7547066", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:169)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:169)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:169` calls `GET /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1b806d3ad030eaf", "name": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:180)", "shortDescription": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:180)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:180` calls `PUT /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7c6b031c91a7365", "name": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:194)", "shortDescription": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:194)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:194` calls `PUT /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-876d2ee4f2d4d839", "name": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:209)", "shortDescription": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:209)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:209` calls `PUT /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-395b9c7df1adfca7", "name": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:220)", "shortDescription": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:220)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:220` calls `PUT /api/projects/${PROJECT_ID}/pm/config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b13d503ca7cc9d09", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:243)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:243)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:243` calls `POST /api/projects/${PROJECT_ID}/pm/policies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e839166fe8b9d4f2", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:258)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:258)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:258` calls `POST /api/projects/${PROJECT_ID}/pm/policies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/policies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc4ff002d04a1487", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:27", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:272)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:272` calls `DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_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: `/projects/<p>/pm/policies/<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-f5aaf565ac8ef3a8", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:28", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:284)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:284` calls `DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_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: `/projects/<p>/pm/policies/<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-dfc300d3bba0e50f", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:29", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:295)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:295` calls `DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_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: `/projects/<p>/pm/policies/<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-8fbd69ab8e3996b7", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions?page=1&pageSize=10 (packages/core/src/pm/routes-crud.test.t", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions?page=1&pageSize=10 (packages/core/src/pm/routes-crud.test.ts:311)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:311` calls `GET /api/projects/${PROJECT_ID}/pm/decisions?page=1&pageSize=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: `/projects/<p>/pm/decisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7435aad10221f8bf", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions (packages/core/src/pm/routes-crud.test.ts:322)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions (packages/core/src/pm/routes-crud.test.ts:322)"}, "fullDescription": {"text": "`packages/core/src/pm/routes-crud.test.ts:322` calls `GET /api/projects/${PROJECT_ID}/pm/decisions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pm/decisions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37bdea4b6e852134", "name": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:39)", "shortDescription": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:39)"}, "fullDescription": {"text": "`packages/core/src/auth/cookie.test.ts:39` calls `GET /set` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/set`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5532eb295af83df8", "name": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:47)", "shortDescription": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:47)"}, "fullDescription": {"text": "`packages/core/src/auth/cookie.test.ts:47` calls `GET /set` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/set`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b90c7256d8f20a79", "name": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:54)", "shortDescription": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:54)"}, "fullDescription": {"text": "`packages/core/src/auth/cookie.test.ts:54` calls `GET /set` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/set`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffd900dd2db90c68", "name": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:63)", "shortDescription": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:63)"}, "fullDescription": {"text": "`packages/core/src/auth/cookie.test.ts:63` calls `GET /set` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/set`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a37f31c17cf11f3f", "name": "Dangling fetch: POST /api/auth/local (packages/core/src/auth/login.test.ts:49)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/local (packages/core/src/auth/login.test.ts:49)"}, "fullDescription": {"text": "`packages/core/src/auth/login.test.ts:49` calls `POST /api/auth/local` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/local`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab8ae2497f76067c", "name": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:38)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:38)"}, "fullDescription": {"text": "`packages/core/src/auth/logout.test.ts:38` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/logout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-862d83398ac7d54e", "name": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:44)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:44)"}, "fullDescription": {"text": "`packages/core/src/auth/logout.test.ts:44` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/logout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-784f148afed25897", "name": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:58)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:58)"}, "fullDescription": {"text": "`packages/core/src/auth/logout.test.ts:58` calls `POST /api/auth/logout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/logout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb1fa88896a5dde6", "name": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:61)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:61` calls `GET /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e4c58541eae2b6f", "name": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:67)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:67)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:67` calls `GET /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9291902a71296374", "name": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:84)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:84` calls `GET /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6668a7156cbbad34", "name": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:99)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:99)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:99` calls `PATCH /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-beda73d22932da19", "name": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:108)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:108)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:108` calls `PATCH /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7c5961a612e2161", "name": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:130)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:130)"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.test.ts:130` calls `PATCH /api/auth/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6dd934852b63d8c7", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:69)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:69)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:69` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30cee8409d9f6bbf", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:95)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:95)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:95` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41ae11c272168fb3", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:110)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:110)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:110` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55a6c439e8f2cc69", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:122)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:122)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:122` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cfa49ebf0750a456", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:136)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:136)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:136` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4f1913e9ae06dfb", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:151)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:151)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:151` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75969105af2b2ded", "name": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:171)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:171)"}, "fullDescription": {"text": "`packages/core/src/auth/register.test.ts:171` calls `POST /api/auth/register` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/register`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d50c5c75e515444f", "name": "Dangling fetch: POST /api/auth/refresh (packages/core/src/auth/refresh.test.ts:137)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/refresh (packages/core/src/auth/refresh.test.ts:137)"}, "fullDescription": {"text": "`packages/core/src/auth/refresh.test.ts:137` calls `POST /api/auth/refresh` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/refresh`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9b0e4923914efd4", "name": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:71)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:71` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32dde17527e2e7d8", "name": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:89)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:89)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:89` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-663da1d4e9452205", "name": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:117)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:117)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:117` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52092fa53b08f33b", "name": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:144)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:144)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:144` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0ef08c163b43085", "name": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:157)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:157)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:157` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4faf68dca2f83c6", "name": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:168)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:168` calls `GET /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1624aed902f7e126", "name": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:188)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:188)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:188` calls `GET /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b577c42f86cd0b6", "name": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:198)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:198)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:198` calls `GET /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f586ebda76476c9", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:209)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:209)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:209` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c57ceb11d69e3661", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:225)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:225)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:225` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f562dcc36d0e2436", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:241)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:241)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:241` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47c01896a5e3b155", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:254)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:254)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:254` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e9a57f792f59dc7", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:264)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:264)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:264` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff095fb8f5bc007c", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:274)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:274)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:274` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a02e64597e77fbf", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:290)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:290)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:290` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2c6433eaccbd3e2", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:307)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:307)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:307` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9deed053fb21e1f5", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:321)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:321)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:321` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82ce61f71bad8678", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:335)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:335)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:335` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-067ae0270bbc8a5a", "name": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:349)", "shortDescription": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:349)"}, "fullDescription": {"text": "`packages/core/src/auth/me.test.ts:349` calls `PATCH /api/auth/me/preferences` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me/preferences`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eefc91d21015b087", "name": "Dangling fetch: GET /api/auth/verify?token=good (packages/core/src/auth/verify.test.ts:35)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/verify?token=good (packages/core/src/auth/verify.test.ts:35)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:35` calls `GET /api/auth/verify?token=good` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d51c5a25d959ad8", "name": "Dangling fetch: GET /api/auth/verify?token=missing (packages/core/src/auth/verify.test.ts:43)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/verify?token=missing (packages/core/src/auth/verify.test.ts:43)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:43` calls `GET /api/auth/verify?token=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: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e54e45ee496596db", "name": "Dangling fetch: GET /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:50)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:50)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:50` calls `GET /api/auth/verify?token=old` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6cfc81b5e095d9d", "name": "Dangling fetch: GET /api/auth/verify (packages/core/src/auth/verify.test.ts:56)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/verify (packages/core/src/auth/verify.test.ts:56)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:56` calls `GET /api/auth/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d97cfb8dad56d0b", "name": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:66)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:66)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:66` calls `POST /api/auth/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6453557b4192e24", "name": "Dangling fetch: POST /api/auth/verify?token=query-token (packages/core/src/auth/verify.test.ts:78)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/verify?token=query-token (packages/core/src/auth/verify.test.ts:78)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:78` calls `POST /api/auth/verify?token=query-token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e9fa8cb2590daed", "name": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:86)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:86)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:86` calls `POST /api/auth/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-448c7410b961465c", "name": "Dangling fetch: POST /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:94)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:94)"}, "fullDescription": {"text": "`packages/core/src/auth/verify.test.ts:94` calls `POST /api/auth/verify?token=old` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-754a2fc199ce0dab", "name": "Dangling fetch: POST /api/auth/reauth (packages/core/src/auth/reauth.test.ts:51)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/reauth (packages/core/src/auth/reauth.test.ts:51)"}, "fullDescription": {"text": "`packages/core/src/auth/reauth.test.ts:51` calls `POST /api/auth/reauth` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/reauth`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-095952d6eb9236dc", "name": "Dangling fetch: POST /api/auth/desktop/pair-init (packages/core/src/auth/desktop/pairing-routes.test.ts:81)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/desktop/pair-init (packages/core/src/auth/desktop/pairing-routes.test.ts:81)"}, "fullDescription": {"text": "`packages/core/src/auth/desktop/pairing-routes.test.ts:81` calls `POST /api/auth/desktop/pair-init` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/desktop/pair-init`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74f58742eb37ad1d", "name": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:89)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:89)"}, "fullDescription": {"text": "`packages/core/src/auth/desktop/pairing-routes.test.ts:89` calls `POST /api/auth/desktop/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/desktop/approve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ccab44375af58d2f", "name": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:176)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:176)"}, "fullDescription": {"text": "`packages/core/src/auth/desktop/pairing-routes.test.ts:176` calls `POST /api/auth/desktop/approve` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/desktop/approve`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb8a23a9cbe9d253", "name": "Dangling fetch: GET /api/auth/desktop/poll (packages/core/src/auth/desktop/pairing-routes.test.ts:249)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/desktop/poll (packages/core/src/auth/desktop/pairing-routes.test.ts:249)"}, "fullDescription": {"text": "`packages/core/src/auth/desktop/pairing-routes.test.ts:249` calls `GET /api/auth/desktop/poll` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/desktop/poll`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ad5bd1ba097e48c", "name": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callba", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:104)"}, "fullDescription": {"text": "`packages/core/src/auth/oauth/reauth-callback.test.ts:104` calls `GET /api/auth/oauth/github/callback?code=c&state=state-nonce` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/oauth/github/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f1f3f3fdf8dce8f", "name": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callba", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:124)"}, "fullDescription": {"text": "`packages/core/src/auth/oauth/reauth-callback.test.ts:124` calls `GET /api/auth/oauth/github/callback?code=c&state=state-nonce` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/oauth/github/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c910a61333940c17", "name": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callba", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:139)"}, "fullDescription": {"text": "`packages/core/src/auth/oauth/reauth-callback.test.ts:139` calls `GET /api/auth/oauth/github/callback?code=c&state=state-nonce` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/oauth/github/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cefd12eae96eea42", "name": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callba", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:156)"}, "fullDescription": {"text": "`packages/core/src/auth/oauth/reauth-callback.test.ts:156` calls `GET /api/auth/oauth/github/callback?code=c&state=state-nonce` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/oauth/github/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5a6babf78c76019", "name": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callba", "shortDescription": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:172)"}, "fullDescription": {"text": "`packages/core/src/auth/oauth/reauth-callback.test.ts:172` calls `GET /api/auth/oauth/github/callback?code=c&state=state-nonce` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/oauth/github/callback`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3e368865c778456", "name": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:32)", "shortDescription": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:32)"}, "fullDescription": {"text": "`packages/core/src/middleware/api-key.test.ts:32` calls `GET /secure/echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/secure/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc99d236c351efec", "name": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:40)", "shortDescription": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:40)"}, "fullDescription": {"text": "`packages/core/src/middleware/api-key.test.ts:40` calls `GET /secure/echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/secure/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b264b8bfdc9f898", "name": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:51)", "shortDescription": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:51)"}, "fullDescription": {"text": "`packages/core/src/middleware/api-key.test.ts:51` calls `GET /secure/echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/secure/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-169e11997ca6d086", "name": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:61)"}, "fullDescription": {"text": "`packages/core/src/middleware/api-key.test.ts:61` calls `GET /secure/echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/secure/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df753ee05caa6113", "name": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:69)", "shortDescription": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:69)"}, "fullDescription": {"text": "`packages/core/src/middleware/api-key.test.ts:69` calls `GET /secure/echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/secure/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9bea3be0fa73bc7d", "name": "Dangling fetch: GET /principals (packages/core/src/middleware/require-device.test.ts:120)", "shortDescription": {"text": "Dangling fetch: GET /principals (packages/core/src/middleware/require-device.test.ts:120)"}, "fullDescription": {"text": "`packages/core/src/middleware/require-device.test.ts:120` calls `GET /principals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/principals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57818927fb91e6e8", "name": "Dangling fetch: GET /gated (packages/core/src/middleware/require-fresh-auth.test.ts:36)", "shortDescription": {"text": "Dangling fetch: GET /gated (packages/core/src/middleware/require-fresh-auth.test.ts:36)"}, "fullDescription": {"text": "`packages/core/src/middleware/require-fresh-auth.test.ts:36` calls `GET /gated` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/gated`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6229da15d90c92df", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:46)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:46)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:46` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee2d1aaf745d2b3c", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:47)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:47)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:47` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e3d208fd75820770", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:48)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:48)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:48` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3fc0dcf3652a1735", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:70)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:70)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:70` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-493194eaae27ff4f", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:71)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:71` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d97c094bbef3410c", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:75)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:75)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:75` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a62a1d9de37e542c", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:81)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:81)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:81` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2767a2ce9f6cb900", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:84)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:84` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c3ef3b415d46729b", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:87)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:87)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:87` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-975b9d8b0cd97fd1", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:97)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:97)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:97` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c638d3e28ab702c", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:100)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:100)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:100` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b10963d9782d6e54", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:103)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:103)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:103` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-495d2eb27adbf88e", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:111)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:111)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:111` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d703d5cc51ddfa81", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:114)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:114)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:114` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7418288625bde4ef", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:118)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:118)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:118` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3db9a6c32c6068d2", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:127)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:127)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:127` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-206efcbb30f396fe", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:128)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:128)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:128` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34c01f0851d68ba7", "name": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:135)", "shortDescription": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:135)"}, "fullDescription": {"text": "`packages/core/src/middleware/rate-limit.test.ts:135` calls `GET /hit` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/hit`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31cfcd2b0a0e5818", "name": "Dangling fetch: GET /ok (packages/core/src/middleware/logger.test.ts:51)", "shortDescription": {"text": "Dangling fetch: GET /ok (packages/core/src/middleware/logger.test.ts:51)"}, "fullDescription": {"text": "`packages/core/src/middleware/logger.test.ts:51` calls `GET /ok` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/ok`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2256a63c46066dc9", "name": "Dangling fetch: GET /client (packages/core/src/middleware/logger.test.ts:61)", "shortDescription": {"text": "Dangling fetch: GET /client (packages/core/src/middleware/logger.test.ts:61)"}, "fullDescription": {"text": "`packages/core/src/middleware/logger.test.ts:61` calls `GET /client` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/client`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-795c468d58e98430", "name": "Dangling fetch: GET /server (packages/core/src/middleware/logger.test.ts:68)", "shortDescription": {"text": "Dangling fetch: GET /server (packages/core/src/middleware/logger.test.ts:68)"}, "fullDescription": {"text": "`packages/core/src/middleware/logger.test.ts:68` calls `GET /server` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/server`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe678b6a3024781f", "name": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:45)", "shortDescription": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:45)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:45` calls `GET /protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9d2eb0263a42848", "name": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:52)", "shortDescription": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:52)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:52` calls `GET /protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-deb77d975fd23ba5", "name": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:62)", "shortDescription": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:62)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:62` calls `GET /protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90c45172435bd49a", "name": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:71)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:71` calls `GET /protected` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/protected`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d828883f142f940e", "name": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:84)", "shortDescription": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:84)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:84` calls `GET /verified` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/verified`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8e3e96affc11bcb", "name": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:97)", "shortDescription": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:97)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:97` calls `GET /verified` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/verified`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3effb00fb2b741f8", "name": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:109)", "shortDescription": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:109)"}, "fullDescription": {"text": "`packages/core/src/middleware/auth.test.ts:109` calls `GET /verified` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/verified`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fb10c5b0542ae72", "name": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:83)", "shortDescription": {"text": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:83)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:83` calls `GET /http-ex` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-760187fa4ce86e9b", "name": "Dangling fetch: GET /http-ex-cause (packages/core/src/middleware/error.test.ts:92)", "shortDescription": {"text": "Dangling fetch: GET /http-ex-cause (packages/core/src/middleware/error.test.ts:92)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:92` calls `GET /http-ex-cause` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex-cause`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cd515b83c4b4107", "name": "Dangling fetch: GET /boom (packages/core/src/middleware/error.test.ts:103)", "shortDescription": {"text": "Dangling fetch: GET /boom (packages/core/src/middleware/error.test.ts:103)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:103` calls `GET /boom` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/boom`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4581f0797d29a279", "name": "Dangling fetch: GET /nope (packages/core/src/middleware/error.test.ts:112)", "shortDescription": {"text": "Dangling fetch: GET /nope (packages/core/src/middleware/error.test.ts:112)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:112` calls `GET /nope` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/nope`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31bb9d8a37e9af8b", "name": "Dangling fetch: GET /http-ex-www-auth (packages/core/src/middleware/error.test.ts:120)", "shortDescription": {"text": "Dangling fetch: GET /http-ex-www-auth (packages/core/src/middleware/error.test.ts:120)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:120` calls `GET /http-ex-www-auth` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex-www-auth`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ccf5490b0b3a6a22", "name": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:131)", "shortDescription": {"text": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:131)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:131` calls `GET /http-ex` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b25f1e69e1c6774c", "name": "Dangling fetch: GET /http-ex-500-www-auth (packages/core/src/middleware/error.test.ts:136)", "shortDescription": {"text": "Dangling fetch: GET /http-ex-500-www-auth (packages/core/src/middleware/error.test.ts:136)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:136` calls `GET /http-ex-500-www-auth` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex-500-www-auth`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-63b85cbdc8ee65df", "name": "Dangling fetch: GET /http-ex-error-cause (packages/core/src/middleware/error.test.ts:145)", "shortDescription": {"text": "Dangling fetch: GET /http-ex-error-cause (packages/core/src/middleware/error.test.ts:145)"}, "fullDescription": {"text": "`packages/core/src/middleware/error.test.ts:145` calls `GET /http-ex-error-cause` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/http-ex-error-cause`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87d6c02d0ab93967", "name": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:15)", "shortDescription": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:15)"}, "fullDescription": {"text": "`packages/core/src/middleware/request-id.test.ts:15` calls `GET /echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ae35acc25ea4cfe", "name": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:25)", "shortDescription": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:25)"}, "fullDescription": {"text": "`packages/core/src/middleware/request-id.test.ts:25` calls `GET /echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d82a9f34df8cc8bd", "name": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:35)", "shortDescription": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:35)"}, "fullDescription": {"text": "`packages/core/src/middleware/request-id.test.ts:35` calls `GET /echo` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/echo`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0250ff0b7fc58fbd", "name": "Dangling fetch: GET /api/projects${path} (packages/core/src/projects/routes.test.ts:156)", "shortDescription": {"text": "Dangling fetch: GET /api/projects${path} (packages/core/src/projects/routes.test.ts:156)"}, "fullDescription": {"text": "`packages/core/src/projects/routes.test.ts:156` calls `GET /api/projects${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<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-ea2f03d66c76fc9a", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:106)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:106)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:106` calls `POST /api/projects/${PROJECT_ID}/members/invite` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invite`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ad6c6cfe58ad70f", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:118)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:118)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:118` calls `POST /api/projects/${PROJECT_ID}/members/invite` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invite`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53a29fc24d263c5c", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:137)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:137)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:137` calls `POST /api/projects/${PROJECT_ID}/members/invite` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invite`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c39bd6759fb4c897", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:161)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:161)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:161` calls `POST /api/projects/${PROJECT_ID}/members/invite` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invite`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd4b2498a91ac6ea", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:190)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:190)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:190` calls `POST /api/projects/${PROJECT_ID}/members/invite` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invite`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-482ceb8aa8d115ed", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.ts:211)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:211` calls `DELETE /api/projects/${PROJECT_ID}/members/${OTHER_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: `/projects/<p>/members/<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-db9169cc936ad3d5", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.ts:226)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:226` calls `DELETE /api/projects/${PROJECT_ID}/members/${OTHER_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: `/projects/<p>/members/<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-788468c33b489851", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:2", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:259)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:259` calls `GET /api/projects/${PROJECT_ID}/members/invitations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf64b2dcc8f689a9", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:2", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:275)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:275` calls `GET /api/projects/${PROJECT_ID}/members/invitations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b8e833381dbf6a7", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/proj", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/projects/members-routes.test.ts:289)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:289` calls `DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a964c0cb6c41818", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=missing@example.com (packages/core/src/proj", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=missing@example.com (packages/core/src/projects/members-routes.test.ts:303)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:303` calls `DELETE /api/projects/${PROJECT_ID}/members/invitations?email=missing@example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1853d5886eac3ef", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/proj", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/projects/members-routes.test.ts:317)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:317` calls `DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e78c16f601dc839", "name": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:328)"}, "fullDescription": {"text": "`packages/core/src/projects/members-routes.test.ts:328` calls `DELETE /api/projects/${PROJECT_ID}/members/invitations` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/members/invitations`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c52786d2432ee1df", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:97)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:97)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:97` calls `GET /api/projects/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: `/projects/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-2c9fa92db9ad846c", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:105)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:105)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:105` calls `GET /api/projects/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: `/projects/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-bb1f5f14fec8bf36", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:129)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:129)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:129` calls `GET /api/projects/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: `/projects/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-355d6578ca2b6aff", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:160)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:160)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:160` calls `GET /api/projects/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: `/projects/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-13cf705e9da1a26d", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:205)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:205)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:205` calls `GET /api/projects/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: `/projects/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-a8b674a119e020b4", "name": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:266)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:266)"}, "fullDescription": {"text": "`packages/core/src/projects/health-routes.test.ts:266` calls `GET /api/projects/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: `/projects/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-796dd78dc9771a95", "name": "Dangling fetch: GET /api/invitations/missing-token (packages/core/src/projects/invitations-routes.test.ts:56)", "shortDescription": {"text": "Dangling fetch: GET /api/invitations/missing-token (packages/core/src/projects/invitations-routes.test.ts:56)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:56` calls `GET /api/invitations/missing-token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/missing-token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-618750fe4af6e7a2", "name": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:71)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:71` calls `GET /api/invitations/tok` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13710c019e88e596", "name": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:88)", "shortDescription": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:88)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:88` calls `GET /api/invitations/tok` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2ec00a539bae7ce", "name": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:105)", "shortDescription": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:105)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:105` calls `GET /api/invitations/tok` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8107070ae81dfb0d", "name": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:115)", "shortDescription": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:115)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:115` calls `POST /api/invitations/tok/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a030b5b925217e77", "name": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:129)", "shortDescription": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:129)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:129` calls `POST /api/invitations/tok/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8000c4204f9a4157", "name": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:146)", "shortDescription": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:146)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:146` calls `POST /api/invitations/tok/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5835a5928b6cbced", "name": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:160)", "shortDescription": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:160)"}, "fullDescription": {"text": "`packages/core/src/projects/invitations-routes.test.ts:160` calls `POST /api/invitations/tok/accept` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/invitations/tok/accept`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-719a4495d5336421", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:63)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:63)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:63` calls `GET /api/issues/${ISSUE_ID}/activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c756f307e8840ce", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:71)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:71` calls `GET /api/issues/${ISSUE_ID}/activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4bc962f2fde362d", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:82)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:82` calls `GET /api/issues/${ISSUE_ID}/activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31850072909c5ece", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=abc (packages/core/src/issues/activity-routes.test.ts:90)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=abc (packages/core/src/issues/activity-routes.test.ts:90)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:90` calls `GET /api/issues/${ISSUE_ID}/activity?limit=abc` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c6c3ac33fda8375", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=2 (packages/core/src/issues/activity-routes.test.ts:116)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=2 (packages/core/src/issues/activity-routes.test.ts:116)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:116` calls `GET /api/issues/${ISSUE_ID}/activity?limit=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: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7581b2963a59d7b5", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=50 (packages/core/src/issues/activity-routes.test.ts:146)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=50 (packages/core/src/issues/activity-routes.test.ts:146)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:146` calls `GET /api/issues/${ISSUE_ID}/activity?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: `/issues/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8e77fcf966c8464", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:156)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:156)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:156` calls `GET /api/projects/${PROJECT_ID}/activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5d5921e914aae5e7", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:163)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:163)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:163` calls `GET /api/projects/${PROJECT_ID}/activity` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a1e2b3df2fad020", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=bogus (packages/core/src/issues/activity-routes.test.ts:17", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=bogus (packages/core/src/issues/activity-routes.test.ts:171)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:171` calls `GET /api/projects/${PROJECT_ID}/activity?type=bogus` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34975399cf48fa65", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=comment (packages/core/src/issues/activity-routes.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=comment (packages/core/src/issues/activity-routes.test.ts:196)"}, "fullDescription": {"text": "`packages/core/src/issues/activity-routes.test.ts:196` calls `GET /api/projects/${PROJECT_ID}/activity?type=comment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/activity`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbd4b3d04a1e1a17", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/NOT-VALID (packages/core/src/issues/by-display.test.ts", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/NOT-VALID (packages/core/src/issues/by-display.test.ts:72)"}, "fullDescription": {"text": "`packages/core/src/issues/by-display.test.ts:72` calls `GET /api/projects/${PROJECT_ID}/issues/by-display/NOT-VALID` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/issues/by-display/not-valid`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f17b8c6060aa8e6b", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-1 (packages/core/src/issues/by-display.test.ts:87)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-1 (packages/core/src/issues/by-display.test.ts:87)"}, "fullDescription": {"text": "`packages/core/src/issues/by-display.test.ts:87` calls `GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-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: `/projects/<p>/issues/by-display/iss-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-c886f377c7ec0094", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-999 (packages/core/src/issues/by-display.test.ts:1", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-999 (packages/core/src/issues/by-display.test.ts:104)"}, "fullDescription": {"text": "`packages/core/src/issues/by-display.test.ts:104` calls `GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-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: `/projects/<p>/issues/by-display/iss-999`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-191b9ee18d41cecd", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-7 (packages/core/src/issues/by-display.test.ts:138", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-7 (packages/core/src/issues/by-display.test.ts:138)"}, "fullDescription": {"text": "`packages/core/src/issues/by-display.test.ts:138` calls `GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-7` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/issues/by-display/iss-7`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb22d2919bd8eb9d", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/search${qs} (packages/core/src/issues/search.test.ts:86)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/search${qs} (packages/core/src/issues/search.test.ts:86)"}, "fullDescription": {"text": "`packages/core/src/issues/search.test.ts:86` calls `GET /api/projects/${PROJECT_ID}/issues/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: `/projects/<p>/issues/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-ba9e3aeacf807c5d", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:204)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:204)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:204` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2fa2781729569f17", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:214)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:214)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:214` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-371b899daced3046", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:224)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:224)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:224` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5bb6b86f3b3cd5a3", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:246)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:246)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:246` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-495964451844dfc8", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:288)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:288)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:288` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-892beea3f843cf69", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:339)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:339)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:339` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c0587e319fac88e", "name": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:383)", "shortDescription": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:383)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes-batch.test.ts:383` calls `PATCH /api/issues/batch` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/batch`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29e8543a61e424de", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/issues (packages/core/src/issues/create.test.ts:110)", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/issues (packages/core/src/issues/create.test.ts:110)"}, "fullDescription": {"text": "`packages/core/src/issues/create.test.ts:110` calls `POST /api/projects/${PROJECT_ID}/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec3a42eb86adaacf", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:150)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:150)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:150` calls `POST /api/issues/${ISSUE_ID}/enrich` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/enrich`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4714ba290d9b5535", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:157)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:157)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:157` calls `POST /api/issues/${ISSUE_ID}/enrich` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/enrich`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a868351f10e13650", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:168` calls `POST /api/issues/${ISSUE_ID}/enrich` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/enrich`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09057460365591ad", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:187)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:187)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:187` calls `POST /api/issues/${ISSUE_ID}/enrich` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/enrich`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4bb7cbbee815d6d", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:224)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:224)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:224` calls `POST /api/issues/${ISSUE_ID}/run-pipeline-step` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/run-pipeline-step`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17eb929d1a2d8355", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:252)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:252)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:252` calls `POST /api/issues/${ISSUE_ID}/run-pipeline-step` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/run-pipeline-step`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6eae57b5e04f2c6", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:279)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:279)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:279` calls `POST /api/issues/${ISSUE_ID}/run-pipeline-step` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/run-pipeline-step`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f02d33a0cb2226d3", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:304)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:304)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:304` calls `POST /api/issues/${ISSUE_ID}/run-pipeline-step` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/run-pipeline-step`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b72647712e5f9b9d", "name": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:319)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:319` calls `GET /api/issues/pipeline-timing?projectId=${PROJECT_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: `/issues/pipeline-timing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbc73d5041e99583", "name": "Dangling fetch: GET /api/issues/pipeline-timing (packages/core/src/issues/extras-routes.test.ts:325)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/pipeline-timing (packages/core/src/issues/extras-routes.test.ts:325)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:325` calls `GET /api/issues/pipeline-timing` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/pipeline-timing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7de21fb77ef981a2", "name": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:334)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:334` calls `GET /api/issues/pipeline-timing?projectId=${PROJECT_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: `/issues/pipeline-timing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7fc58d8a185c06cc", "name": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:360)"}, "fullDescription": {"text": "`packages/core/src/issues/extras-routes.test.ts:360` calls `GET /api/issues/pipeline-timing?projectId=${PROJECT_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: `/issues/pipeline-timing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48d9fc78784f644c", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:130)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:130` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa54485875f9b66f", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:139)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:139)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:139` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16f2d62a31113ce1", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:150)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:150)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:150` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd2f6c764f8e9ca0", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:168` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74508dcda2a01879", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:188)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:188)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:188` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f033274cdc95a931", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:217)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:217)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:217` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2aeb881597699215", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:257)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:257)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:257` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e855a183810e6bd", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:293)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:293)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:293` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-35befa1829b9bc04", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:307)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:307)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:307` calls `POST /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b9a9d1d7dd2b97e", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:336)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:336)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:336` calls `GET /api/issues/${ISSUE_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d76986afb66b100a", "name": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:364)", "shortDescription": {"text": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:364)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:364` calls `GET /api/attachments/${ATT_ID}/download` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/attachments/<p>/download`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97cc4a92f9d68bcb", "name": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:391)", "shortDescription": {"text": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:391)"}, "fullDescription": {"text": "`packages/core/src/issues/attachment-routes.test.ts:391` calls `GET /api/attachments/${ATT_ID}/download` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/attachments/<p>/download`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-817f73f3d88f5172", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/transition (packages/core/src/issues/transition.test.ts:105)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/transition (packages/core/src/issues/transition.test.ts:105)"}, "fullDescription": {"text": "`packages/core/src/issues/transition.test.ts:105` calls `POST /api/issues/${ISSUE_ID}/transition` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/transition`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a621444b318ec7c", "name": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:90)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:90)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:90` calls `GET /api/chat/sessions?projectId=${PROJECT_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: `/chat/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d7df3b00ccc99d5", "name": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:101)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:101)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:101` calls `GET /api/chat/sessions?projectId=${PROJECT_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: `/chat/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba69842ddfdc128b", "name": "Dangling fetch: POST /api/chat/sessions (packages/core/src/chat/sessions-routes.test.ts:117)", "shortDescription": {"text": "Dangling fetch: POST /api/chat/sessions (packages/core/src/chat/sessions-routes.test.ts:117)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:117` calls `POST /api/chat/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-964c259dacbfdd37", "name": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:132)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:132)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:132` calls `GET /api/chat/sessions/${SESSION_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: `/chat/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-32b264a7983f8e42", "name": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:141)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:141` calls `GET /api/chat/sessions/${SESSION_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: `/chat/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-33fede2a2f882c97", "name": "Dangling fetch: DELETE /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:152)", "shortDescription": {"text": "Dangling fetch: DELETE /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:152)"}, "fullDescription": {"text": "`packages/core/src/chat/sessions-routes.test.ts:152` calls `DELETE /api/chat/sessions/${SESSION_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: `/chat/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-34ab3a50bcbca49d", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:183)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:183)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:183` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b21373b54cbfad8", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:194)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:194)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:194` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e8cf4eface21292", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:204)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:204)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:204` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a1277ae2864466e", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:232)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:232)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:232` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f87e1e6ecce8150", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:302)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:302)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:302` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4d3658b52b5b600", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:345)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:345)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:345` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-206f10987e5d3d27", "name": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:373)", "shortDescription": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:373)"}, "fullDescription": {"text": "`packages/core/src/chat/routes.test.ts:373` calls `POST /api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08f922f18175ca65", "name": "Dangling fetch: GET /api/knowledge-edges?projectId=${PROJECT_ID} (packages/core/src/knowledge-edges/routes.test.ts:76)", "shortDescription": {"text": "Dangling fetch: GET /api/knowledge-edges?projectId=${PROJECT_ID} (packages/core/src/knowledge-edges/routes.test.ts:76)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:76` calls `GET /api/knowledge-edges?projectId=${PROJECT_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: `/knowledge-edges`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f61ecfb58733e929", "name": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:89)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:89)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:89` calls `POST /api/knowledge-edges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge-edges`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e715cfac5e0df849", "name": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:104)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:104)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:104` calls `POST /api/knowledge-edges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge-edges`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-230b827011fa8fbf", "name": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:118)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:118)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:118` calls `POST /api/knowledge-edges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge-edges`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6caac19ac023cbc", "name": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:132)", "shortDescription": {"text": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:132)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:132` calls `DELETE /api/knowledge-edges/${EDGE_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: `/knowledge-edges/<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-423f3f776fdec4b9", "name": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:144)", "shortDescription": {"text": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:144)"}, "fullDescription": {"text": "`packages/core/src/knowledge-edges/routes.test.ts:144` calls `DELETE /api/knowledge-edges/${EDGE_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: `/knowledge-edges/<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-c36b6fda84890f62", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:88)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:88)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:88` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4203bf1a27fb6ead", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:98)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:98)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:98` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09438a7c33af8d7a", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:109)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:109)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:109` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7f7d5981e4406bd", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:121)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:121)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:121` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-caf0cfdd01855640", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:144)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:144)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:144` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fef4c1690232b11", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:166)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:166)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:166` calls `POST /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b050920018587a5", "name": "Dangling fetch: GET /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:185)", "shortDescription": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:185)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:185` calls `GET /api/issues/${ISSUE_ID}/tasks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4798c08e9f98f6c", "name": "Dangling fetch: PATCH /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:210)", "shortDescription": {"text": "Dangling fetch: PATCH /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:210)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:210` calls `PATCH /api/tasks/${TASK_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: `/tasks/<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-adac272adce8683f", "name": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:227)", "shortDescription": {"text": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:227)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:227` calls `DELETE /api/tasks/${TASK_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: `/tasks/<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-f9cf416d2ac899fb", "name": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:247)", "shortDescription": {"text": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:247)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:247` calls `DELETE /api/tasks/${TASK_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: `/tasks/<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-302731d21fb13153", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:267)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:267)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:267` calls `POST /api/issues/${ISSUE_ID}/tasks/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks/reorder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ef1107decf7f1982", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:284)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:284)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:284` calls `POST /api/issues/${ISSUE_ID}/tasks/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks/reorder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86f9e2ef17d3049a", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:301)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:301)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:301` calls `POST /api/issues/${ISSUE_ID}/tasks/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks/reorder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb1e9f80cc96b8b5", "name": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:324)", "shortDescription": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:324)"}, "fullDescription": {"text": "`packages/core/src/tasks/routes.test.ts:324` calls `POST /api/issues/${ISSUE_ID}/tasks/reorder` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/issues/<p>/tasks/reorder`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14e1ac6d4e4e032c", "name": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:78)", "shortDescription": {"text": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:78)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:78` calls `GET /api/domain-templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f561c2fb7f44b35", "name": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:88)", "shortDescription": {"text": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:88)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:88` calls `GET /api/domain-templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8222fa3e241b3d6", "name": "Dangling fetch: GET /api/domain-templates/missing (packages/core/src/domain-templates/routes.test.ts:101)", "shortDescription": {"text": "Dangling fetch: GET /api/domain-templates/missing (packages/core/src/domain-templates/routes.test.ts:101)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:101` calls `GET /api/domain-templates/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: `/domain-templates/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-cf96ca6a7dcf7b15", "name": "Dangling fetch: GET /api/domain-templates/hrm (packages/core/src/domain-templates/routes.test.ts:110)", "shortDescription": {"text": "Dangling fetch: GET /api/domain-templates/hrm (packages/core/src/domain-templates/routes.test.ts:110)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:110` calls `GET /api/domain-templates/hrm` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates/hrm`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2845380d573722d7", "name": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:128)", "shortDescription": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:128)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:128` calls `POST /api/domain-templates/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f5891f9ca73b5f0", "name": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:141)", "shortDescription": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:141)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:141` calls `POST /api/domain-templates/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e9f8d2849c2774e", "name": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:153)", "shortDescription": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:153)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:153` calls `POST /api/domain-templates/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a86e390851340ba", "name": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:163)", "shortDescription": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:163)"}, "fullDescription": {"text": "`packages/core/src/domain-templates/routes.test.ts:163` calls `POST /api/domain-templates/apply` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/domain-templates/apply`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1938bd1829c4819a", "name": "Dangling fetch: GET /api/agent-sessions?projectId=${PROJECT_ID} (packages/core/src/agent-sessions/routes.test.ts:182)", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions?projectId=${PROJECT_ID} (packages/core/src/agent-sessions/routes.test.ts:182)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:182` calls `GET /api/agent-sessions?projectId=${PROJECT_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: `/agent-sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6911c79784c53cd0", "name": "Dangling fetch: POST /api/agent-sessions (packages/core/src/agent-sessions/routes.test.ts:197)", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions (packages/core/src/agent-sessions/routes.test.ts:197)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:197` calls `POST /api/agent-sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c2e522314105634", "name": "Dangling fetch: POST /api/agent-sessions/start (packages/core/src/agent-sessions/routes.test.ts:225)", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/start (packages/core/src/agent-sessions/routes.test.ts:225)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:225` calls `POST /api/agent-sessions/start` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/start`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-412936634782fd5c", "name": "Dangling fetch: PATCH /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:251)", "shortDescription": {"text": "Dangling fetch: PATCH /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:251)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:251` calls `PATCH /api/agent-sessions/${SESSION_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: `/agent-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-46287820f0356427", "name": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:272)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:272` calls `POST /api/agent-sessions/${SESSION_ID}/pipeline-control` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/pipeline-control`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5336810a1da9a62d", "name": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:312)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:312` calls `POST /api/agent-sessions/${SESSION_ID}/pipeline-control` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/pipeline-control`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd7b85b72bd410ff", "name": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:349)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:349` calls `POST /api/agent-sessions/${SESSION_ID}/pipeline-control` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/pipeline-control`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27474af8ab4efbca", "name": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:367)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:367` calls `POST /api/agent-sessions/${SESSION_ID}/pipeline-control` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/pipeline-control`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-861708bbb197babb", "name": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:393)", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:393)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:393` calls `GET /api/agent-sessions/${SESSION_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: `/agent-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-e198244751c9b50b", "name": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:415)", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:415)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:415` calls `GET /api/agent-sessions/${SESSION_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: `/agent-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-0b0dd422fdbab16f", "name": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:427)", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:427)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:427` calls `GET /api/agent-sessions/${SESSION_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: `/agent-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-9c5f2b824d9c8039", "name": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:4", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:453)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:453` calls `GET /api/agent-sessions/${SESSION_ID}/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: `/agent-sessions/<p>/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-e9e6efb83f5511ce", "name": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:4", "shortDescription": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:468)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:468` calls `GET /api/agent-sessions/${SESSION_ID}/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: `/agent-sessions/<p>/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-10bad476c13ed3b3", "name": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/relay (packages/core/src/agent-sessions/routes.test.ts:486)", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/relay (packages/core/src/agent-sessions/routes.test.ts:486)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:486` calls `POST /api/agent-sessions/${SESSION_ID}/relay` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/<p>/relay`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e5185c5a951b042", "name": "Dangling fetch: POST /api/agent-sessions/desktop/status (packages/core/src/agent-sessions/routes.test.ts:507)", "shortDescription": {"text": "Dangling fetch: POST /api/agent-sessions/desktop/status (packages/core/src/agent-sessions/routes.test.ts:507)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:507` calls `POST /api/agent-sessions/desktop/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agent-sessions/desktop/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fa6d15f312214c5", "name": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:523)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:523)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:523` calls `DELETE /api/agent-sessions/${SESSION_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: `/agent-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-c5ef82a39c499cb7", "name": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:544)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:544)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:544` calls `DELETE /api/agent-sessions/${SESSION_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: `/agent-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-17890e4ac7973bcd", "name": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:564)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:564)"}, "fullDescription": {"text": "`packages/core/src/agent-sessions/routes.test.ts:564` calls `DELETE /api/agent-sessions/${SESSION_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: `/agent-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-f662cf4b5f01ef09", "name": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:89)", "shortDescription": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:89)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:89` calls `GET /api/agents?projectId=${PROJECT_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: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a066fd320ea0e107", "name": "Dangling fetch: GET /api/agents (packages/core/src/agents/routes.test.ts:95)", "shortDescription": {"text": "Dangling fetch: GET /api/agents (packages/core/src/agents/routes.test.ts:95)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:95` calls `GET /api/agents` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a5af32ef184fa35", "name": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:108)", "shortDescription": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:108)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:108` calls `GET /api/agents?projectId=${PROJECT_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: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7d324646e250470", "name": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:119)", "shortDescription": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:119)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:119` calls `GET /api/agents?projectId=${PROJECT_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: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dbf4a6f1fb04dc98", "name": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:133)", "shortDescription": {"text": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:133)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:133` calls `POST /api/agents` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eea41604e65baaab", "name": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:143)", "shortDescription": {"text": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:143)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:143` calls `POST /api/agents` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3abaf304d58dad9d", "name": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:162)", "shortDescription": {"text": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:162)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:162` calls `PATCH /api/agents/${AGENT_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: `/agents/<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-8ec900af0f5d3ba8", "name": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:175)", "shortDescription": {"text": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:175)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:175` calls `PATCH /api/agents/${AGENT_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: `/agents/<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-623bbcff625b45c2", "name": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:189)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:189)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:189` calls `DELETE /api/agents/${AGENT_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: `/agents/<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-eeea9d12c5dcd460", "name": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:200)", "shortDescription": {"text": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:200)"}, "fullDescription": {"text": "`packages/core/src/agents/routes.test.ts:200` calls `DELETE /api/agents/${AGENT_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: `/agents/<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-7e92109c7a2a6b3e", "name": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:64)", "shortDescription": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:64)"}, "fullDescription": {"text": "`packages/core/src/me/attention-routes.test.ts:64` calls `GET /api/me/attention` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/me/attention`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-96f1d5c7342843c6", "name": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:75)", "shortDescription": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:75)"}, "fullDescription": {"text": "`packages/core/src/me/attention-routes.test.ts:75` calls `GET /api/me/attention` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/me/attention`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4b9f608a8a9e056", "name": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:142)", "shortDescription": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:142)"}, "fullDescription": {"text": "`packages/core/src/me/attention-routes.test.ts:142` calls `GET /api/me/attention` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/me/attention`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b655e1d6748e947f", "name": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:198)", "shortDescription": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:198)"}, "fullDescription": {"text": "`packages/core/src/me/attention-routes.test.ts:198` calls `GET /api/me/attention` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/me/attention`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-286a081aa99afdd2", "name": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:150)", "shortDescription": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:150)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:150` calls `GET /api/pipeline-runs/${RUN_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: `/pipeline-runs/<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-62bff60b9fe4f559", "name": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:164)", "shortDescription": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:164)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:164` calls `GET /api/pipeline-runs/${RUN_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: `/pipeline-runs/<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-da2f7f5e28f1b8c1", "name": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:176)", "shortDescription": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:176)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:176` calls `GET /api/pipeline-runs/${RUN_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: `/pipeline-runs/<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-66764f28565c1204", "name": "Dangling fetch: GET /api/pipeline-runs/not-a-uuid (packages/core/src/pipeline/runs-read-routes.test.ts:185)", "shortDescription": {"text": "Dangling fetch: GET /api/pipeline-runs/not-a-uuid (packages/core/src/pipeline/runs-read-routes.test.ts:185)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:185` calls `GET /api/pipeline-runs/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: `/pipeline-runs/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-3e1e8a0b814b4aca", "name": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:192)", "shortDescription": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:192)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:192` calls `GET /api/pipeline-runs/${RUN_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: `/pipeline-runs/<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-a742e71aee5ca218", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?limit=10&offset=0 (packages/core/src/pipeline/runs-read-ro", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?limit=10&offset=0 (packages/core/src/pipeline/runs-read-routes.test.ts:230)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:230` calls `GET /api/projects/${PROJECT_ID}/pipeline-runs?limit=10&offset=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pipeline-runs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2716cb8bf3110770", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs (packages/core/src/pipeline/runs-read-routes.test.ts:252)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs (packages/core/src/pipeline/runs-read-routes.test.ts:252)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:252` calls `GET /api/projects/${PROJECT_ID}/pipeline-runs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pipeline-runs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d9e613520cb0d15", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?status=bogus (packages/core/src/pipeline/runs-read-routes.", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?status=bogus (packages/core/src/pipeline/runs-read-routes.test.ts:261)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-read-routes.test.ts:261` calls `GET /api/projects/${PROJECT_ID}/pipeline-runs?status=bogus` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/pipeline-runs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b131bb17b204fd5", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:113)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:113)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:113` calls `POST /api/pipeline-runs/${RUN_ID}/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: `/pipeline-runs/<p>/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-56e4068cc69050a1", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:127)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:127)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:127` calls `POST /api/pipeline-runs/${RUN_ID}/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: `/pipeline-runs/<p>/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-78ad6da304072ed8", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:140)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:140)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:140` calls `POST /api/pipeline-runs/${RUN_ID}/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: `/pipeline-runs/<p>/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-b37a5fbfc5abf285", "name": "Dangling fetch: POST /api/pipeline-runs/not-a-uuid/pause (packages/core/src/pipeline/runs-routes.test.ts:151)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/not-a-uuid/pause (packages/core/src/pipeline/runs-routes.test.ts:151)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:151` calls `POST /api/pipeline-runs/not-a-uuid/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: `/pipeline-runs/not-a-uuid/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-40104a16c2f0d424", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:166)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:166)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:166` calls `POST /api/pipeline-runs/${RUN_ID}/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: `/pipeline-runs/<p>/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-69dad855c42fe98f", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:182)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:182)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:182` calls `POST /api/pipeline-runs/${RUN_ID}/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: `/pipeline-runs/<p>/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-3400bf863c519992", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:202)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:202)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:202` calls `POST /api/pipeline-runs/${RUN_ID}/cancel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/pipeline-runs/<p>/cancel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9820bca89f8f0842", "name": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:218)", "shortDescription": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:218)"}, "fullDescription": {"text": "`packages/core/src/pipeline/runs-routes.test.ts:218` calls `POST /api/pipeline-runs/${RUN_ID}/cancel` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/pipeline-runs/<p>/cancel`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0fbfe33cd02bd75d", "name": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:92)", "shortDescription": {"text": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:92)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:92` calls `GET /api/chat-logs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat-logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2d64913881568116", "name": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:110)", "shortDescription": {"text": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:110)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:110` calls `GET /api/chat-logs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat-logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce037869b83d1be2", "name": "Dangling fetch: GET /api/chat-logs?projectSlug=${SLUG} (packages/core/src/chat-logs/routes.test.ts:123)", "shortDescription": {"text": "Dangling fetch: GET /api/chat-logs?projectSlug=${SLUG} (packages/core/src/chat-logs/routes.test.ts:123)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:123` calls `GET /api/chat-logs?projectSlug=${SLUG}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/chat-logs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e329879bef31a593", "name": "Dangling fetch: GET /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:137)", "shortDescription": {"text": "Dangling fetch: GET /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:137)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:137` calls `GET /api/chat-logs/${LOG_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: `/chat-logs/<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-2b948614297a1ba4", "name": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:153)", "shortDescription": {"text": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:153)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:153` calls `PATCH /api/chat-logs/${LOG_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: `/chat-logs/<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-c94334fd71fb3c06", "name": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/chat-logs/routes.test.ts:168` calls `PATCH /api/chat-logs/${LOG_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: `/chat-logs/<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-26274f2640fa260c", "name": "Dangling fetch: GET /api/projects/not-a-uuid/metrics/timeseries?metric=cost (packages/core/src/metrics/routes.test.ts:87", "shortDescription": {"text": "Dangling fetch: GET /api/projects/not-a-uuid/metrics/timeseries?metric=cost (packages/core/src/metrics/routes.test.ts:87)"}, "fullDescription": {"text": "`packages/core/src/metrics/routes.test.ts:87` calls `GET /api/projects/not-a-uuid/metrics/timeseries?metric=cost` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/not-a-uuid/metrics/timeseries`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b192d92c383d9dd8", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:87)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:87)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:87` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81eb06f11243526b", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:103)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:103)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:103` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5161780cbd54620c", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:121)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:121)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:121` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f00b3e445fc403e5", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:139)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:139)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:139` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eed4454452928c1f", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:168)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:168)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:168` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2546adfb70a4b5a6", "name": "Dangling fetch: PUT /api/schedules/${SCHEDULE_ID} (packages/core/src/schedules/routes.test.ts:195)", "shortDescription": {"text": "Dangling fetch: PUT /api/schedules/${SCHEDULE_ID} (packages/core/src/schedules/routes.test.ts:195)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:195` calls `PUT /api/schedules/${SCHEDULE_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: `/schedules/<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-fcbed1819d050a64", "name": "Dangling fetch: GET /api/schedules?projectId=${PROJECT_ID} (packages/core/src/schedules/routes.test.ts:213)", "shortDescription": {"text": "Dangling fetch: GET /api/schedules?projectId=${PROJECT_ID} (packages/core/src/schedules/routes.test.ts:213)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:213` calls `GET /api/schedules?projectId=${PROJECT_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: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2fcd57926ff45b7f", "name": "Dangling fetch: GET /api/schedules (packages/core/src/schedules/routes.test.ts:223)", "shortDescription": {"text": "Dangling fetch: GET /api/schedules (packages/core/src/schedules/routes.test.ts:223)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:223` calls `GET /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ab200e07b394e54", "name": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:254)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:254)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:254` calls `POST /api/schedules/${SCHEDULE_ID}/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules/<p>/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d15f49955058e901", "name": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:285)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:285)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:285` calls `POST /api/schedules/${SCHEDULE_ID}/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules/<p>/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71c861bf6e2c6e45", "name": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:320)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:320)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:320` calls `POST /api/schedules/${SCHEDULE_ID}/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules/<p>/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8787f02ac4e3354", "name": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:345)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:345)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:345` calls `POST /api/schedules/${SCHEDULE_ID}/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules/<p>/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26dbfc25498e4771", "name": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:373)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:373)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:373` calls `POST /api/schedules/${SCHEDULE_ID}/run` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules/<p>/run`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fc3916e75b4545d1", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:396)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:396)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:396` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1a8f39c309266b5", "name": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:416)", "shortDescription": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:416)"}, "fullDescription": {"text": "`packages/core/src/schedules/routes.test.ts:416` calls `POST /api/schedules` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedules`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2449d374a0a6fe35", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:79)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:79)"}, "fullDescription": {"text": "`packages/core/src/skills/studio-routes.test.ts:79` calls `GET /api/projects/${PROJECT_ID}/skills/effective` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/effective`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-68007e9313986087", "name": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:98)", "shortDescription": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:98)"}, "fullDescription": {"text": "`packages/core/src/skills/studio-routes.test.ts:98` calls `GET /api/projects/${PROJECT_ID}/skills/effective` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/effective`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f66c2955cf263bb", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:14", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:140)"}, "fullDescription": {"text": "`packages/core/src/skills/studio-routes.test.ts:140` calls `POST /api/projects/${PROJECT_ID}/skills/apply-default` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/apply-default`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-277c4a6821f04683", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:16", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:160)"}, "fullDescription": {"text": "`packages/core/src/skills/studio-routes.test.ts:160` calls `POST /api/projects/${PROJECT_ID}/skills/apply-default` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/apply-default`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-effbd00e17c821ea", "name": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:17", "shortDescription": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:175)"}, "fullDescription": {"text": "`packages/core/src/skills/studio-routes.test.ts:175` calls `POST /api/projects/${PROJECT_ID}/skills/apply-default` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/projects/<p>/skills/apply-default`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e7011162debc02c", "name": "Dangling fetch: GET /api/skills?scope=global (packages/core/src/skills/crud-routes.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/skills?scope=global (packages/core/src/skills/crud-routes.test.ts:82)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:82` calls `GET /api/skills?scope=global` 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`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fd79c9fd70ce4ba", "name": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:94)", "shortDescription": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:94)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:94` calls `POST /api/skills` 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`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a6162adb615d410", "name": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:106)", "shortDescription": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:106)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:106` calls `POST /api/skills` 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`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-039f15a6934e8c7a", "name": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:134)", "shortDescription": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:134)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:134` calls `POST /api/skills` 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`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd3263742424be7a", "name": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:170)", "shortDescription": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:170)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:170` calls `POST /api/skills` 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`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7926eb086699a78", "name": "Dangling fetch: PUT /api/skills/${SKILL_ID} (packages/core/src/skills/crud-routes.test.ts:211)", "shortDescription": {"text": "Dangling fetch: PUT /api/skills/${SKILL_ID} (packages/core/src/skills/crud-routes.test.ts:211)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:211` calls `PUT /api/skills/${SKILL_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: `/skills/<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-f48591e4dbebbe24", "name": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:233)", "shortDescription": {"text": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:233)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:233` calls `POST /api/skills/bulk-push` 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/bulk-push`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-457aba01fb1d1acb", "name": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:246)", "shortDescription": {"text": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:246)"}, "fullDescription": {"text": "`packages/core/src/skills/crud-routes.test.ts:246` calls `POST /api/skills/bulk-push` 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/bulk-push`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a5e25d37f96801fb", "name": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:74)", "shortDescription": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:74)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:74` calls `GET /api/app-config/${PROJECT_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: `/app-config/<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-6747ee6fe28d434d", "name": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:82)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:82` calls `GET /api/app-config/${PROJECT_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: `/app-config/<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-7ab1393b2db33a12", "name": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:95)", "shortDescription": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:95)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:95` calls `GET /api/app-config/${PROJECT_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: `/app-config/<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-18314a51e889c5c8", "name": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:106)", "shortDescription": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:106)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:106` calls `GET /api/app-config/${PROJECT_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: `/app-config/<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-0bf864afc4d9c505", "name": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:120)", "shortDescription": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:120)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:120` calls `PUT /api/app-config/${PROJECT_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: `/app-config/<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-267822063b5ff408", "name": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:132)", "shortDescription": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:132)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:132` calls `PUT /api/app-config/${PROJECT_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: `/app-config/<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-bf1b41dc6fcf8daa", "name": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:143)", "shortDescription": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:143)"}, "fullDescription": {"text": "`packages/core/src/app-config/routes.test.ts:143` calls `PUT /api/app-config/${PROJECT_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: `/app-config/<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-a5e03e48fd93f161", "name": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:74)", "shortDescription": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:74)"}, "fullDescription": {"text": "`packages/core/src/devices/skills-routes.test.ts:74` calls `GET /api/devices/me/skills?projectId=${PROJECT_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: `/devices/me/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23b64bb5c4c3b4a0", "name": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:81)", "shortDescription": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:81)"}, "fullDescription": {"text": "`packages/core/src/devices/skills-routes.test.ts:81` calls `GET /api/devices/me/skills?projectId=${PROJECT_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: `/devices/me/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-64ed1c320256be20", "name": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:90)", "shortDescription": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:90)"}, "fullDescription": {"text": "`packages/core/src/devices/skills-routes.test.ts:90` calls `GET /api/devices/me/skills?projectId=${PROJECT_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: `/devices/me/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1942cefce5f9f469", "name": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:99)", "shortDescription": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:99)"}, "fullDescription": {"text": "`packages/core/src/devices/skills-routes.test.ts:99` calls `GET /api/devices/me/skills?projectId=${PROJECT_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: `/devices/me/skills`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c26cec526285e389", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:97)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:97)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:97` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93ad29427da816bb", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:121)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:121)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:121` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9635638c81a0192", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:149)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:149)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:149` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71c5b6ae2c95c686", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:179)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:179)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:179` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8caa4cf6f7d605d", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:190)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:190)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:190` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4eba4b38094a966e", "name": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:203)", "shortDescription": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:203)"}, "fullDescription": {"text": "`packages/core/src/comments/upload.test.ts:203` calls `POST /api/comments/${COMMENT_ID}/attachments` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/comments/<p>/attachments`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c0b8ab1c7541f3ed", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:65)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:65)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:65` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82b7f1a4821549a4", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:75)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:75)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:75` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04345dc10198fac0", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:90)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:90)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:90` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8a84b8a5cf7059b", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:101)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:101)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:101` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77fefc4edec0ca8b", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:116)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:116)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:116` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49e6da2e96687034", "name": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:144)", "shortDescription": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:144)"}, "fullDescription": {"text": "`packages/core/src/knowledge/ingest-routes.test.ts:144` calls `POST /api/knowledge/ingest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/knowledge/ingest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8073f7bf758f6d0", "name": "Unused endpoint: USE /api/*", "shortDescription": {"text": "Unused endpoint: USE /api/*"}, "fullDescription": {"text": "`packages/core/src/index.ts` declares `USE /api/*` 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-95e266019920938e", "name": "Unused endpoint: USE /mcp", "shortDescription": {"text": "Unused endpoint: USE /mcp"}, "fullDescription": {"text": "`packages/core/src/index.ts` declares `USE /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-239a938869adf673", "name": "Unused endpoint: POST /mcp", "shortDescription": {"text": "Unused endpoint: POST /mcp"}, "fullDescription": {"text": "`packages/core/src/index.ts` declares `POST /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-cc1d680cdc3d6aa1", "name": "Unused endpoint: GET /mcp", "shortDescription": {"text": "Unused endpoint: GET /mcp"}, "fullDescription": {"text": "`packages/core/src/index.ts` declares `GET /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-56b4efafa0127feb", "name": "Unused endpoint: DELETE /mcp", "shortDescription": {"text": "Unused endpoint: DELETE /mcp"}, "fullDescription": {"text": "`packages/core/src/index.ts` declares `DELETE /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-f12631f7bc6cf19f", "name": "Unused endpoint: GET /:projectId/integrations", "shortDescription": {"text": "Unused endpoint: GET /:projectId/integrations"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /:projectId/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-a90f838a457c14f3", "name": "Unused endpoint: POST /:projectId/integrations", "shortDescription": {"text": "Unused endpoint: POST /:projectId/integrations"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:projectId/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-5b06399397f88c7e", "name": "Unused endpoint: PATCH /:projectId/integrations/:id", "shortDescription": {"text": "Unused endpoint: PATCH /:projectId/integrations/:id"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `PATCH /:projectId/integrations/: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-14b02dfd7a1fc7ed", "name": "Unused endpoint: DELETE /:projectId/integrations/:id", "shortDescription": {"text": "Unused endpoint: DELETE /:projectId/integrations/:id"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `DELETE /:projectId/integrations/: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-8d62687f1963218a", "name": "Unused endpoint: POST /:projectId/integrations/:id/test", "shortDescription": {"text": "Unused endpoint: POST /:projectId/integrations/:id/test"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:projectId/integrations/:id/test` 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-742fe5fc3e445213", "name": "Unused endpoint: POST /:projectId/integrations/:id/rotate-secret", "shortDescription": {"text": "Unused endpoint: POST /:projectId/integrations/:id/rotate-secret"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:projectId/integrations/:id/rotate-secret` 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-96c03c7d36133b37", "name": "Unused endpoint: POST /:projectId/integrations/:id/confirm-prod-deploy", "shortDescription": {"text": "Unused endpoint: POST /:projectId/integrations/:id/confirm-prod-deploy"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:projectId/integrations/:id/confirm-prod-deploy` 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-7d34fe73707496f3", "name": "Unused endpoint: GET /:projectId/integrations/:id/deliveries", "shortDescription": {"text": "Unused endpoint: GET /:projectId/integrations/:id/deliveries"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /:projectId/integrations/:id/deliveries` 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-840a13477f7a6354", "name": "Unused endpoint: POST /:projectId/integrations/:id/deliveries/:deliveryId/retry", "shortDescription": {"text": "Unused endpoint: POST /:projectId/integrations/:id/deliveries/:deliveryId/retry"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:projectId/integrations/:id/deliveries/:deliveryId/retry` 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-0d1b151cedf6c68d", "name": "Unused endpoint: GET /:projectId/integrations/status", "shortDescription": {"text": "Unused endpoint: GET /:projectId/integrations/status"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /:projectId/integrations/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15e4ba84d8182924", "name": "Unused endpoint: GET /:projectId/integrations/mcp-preview", "shortDescription": {"text": "Unused endpoint: GET /:projectId/integrations/mcp-preview"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /:projectId/integrations/mcp-preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6cf2fe34c4dde93", "name": "Unused endpoint: POST /:id/bindings", "shortDescription": {"text": "Unused endpoint: POST /:id/bindings"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:id/bindings` 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-539968b6f62bba8c", "name": "Unused endpoint: GET /:id/bindings", "shortDescription": {"text": "Unused endpoint: GET /:id/bindings"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `GET /:id/bindings` 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-09b1d89ab53d3a78", "name": "Unused endpoint: POST /:id/test", "shortDescription": {"text": "Unused endpoint: POST /:id/test"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `POST /:id/test` 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-5fbc954f63526821", "name": "Unused endpoint: PATCH /:id", "shortDescription": {"text": "Unused endpoint: PATCH /:id"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `PATCH /: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-7a61c112b611f4bb", "name": "Unused endpoint: DELETE /:id", "shortDescription": {"text": "Unused endpoint: DELETE /:id"}, "fullDescription": {"text": "`packages/core/src/integrations/routes.ts` declares `DELETE /: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-e1b7bee247ffc801", "name": "Unused endpoint: GET /summary", "shortDescription": {"text": "Unused endpoint: GET /summary"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.ts` declares `GET /summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca5756175765b49d", "name": "Unused endpoint: GET /:id", "shortDescription": {"text": "Unused endpoint: GET /:id"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.ts` declares `GET /: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-90631dcf4fb49f54", "name": "Unused endpoint: POST /bulk", "shortDescription": {"text": "Unused endpoint: POST /bulk"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.ts` declares `POST /bulk` 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-f68d8fd88857255e", "name": "Unused endpoint: POST /ingest-cli", "shortDescription": {"text": "Unused endpoint: POST /ingest-cli"}, "fullDescription": {"text": "`packages/core/src/usage-records/routes.ts` declares `POST /ingest-cli` 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-cccfe89f81ab208f", "name": "Unused endpoint: POST /preview", "shortDescription": {"text": "Unused endpoint: POST /preview"}, "fullDescription": {"text": "`packages/core/src/prompt/routes.ts` declares `POST /preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a30438a9a658c26", "name": "Unused endpoint: GET /install.sh", "shortDescription": {"text": "Unused endpoint: GET /install.sh"}, "fullDescription": {"text": "`packages/core/src/install/routes.ts` declares `GET /install.sh` 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-725ea27a393ff2ba", "name": "Unused endpoint: GET /install/latest.json", "shortDescription": {"text": "Unused endpoint: GET /install/latest.json"}, "fullDescription": {"text": "`packages/core/src/install/routes.ts` declares `GET /install/latest.json` 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-1381ab73b23c2656", "name": "Unused endpoint: GET /install/bin/:target", "shortDescription": {"text": "Unused endpoint: GET /install/bin/:target"}, "fullDescription": {"text": "`packages/core/src/install/routes.ts` declares `GET /install/bin/:target` 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-1de80da0b27387f7", "name": "Unused endpoint: GET /unread-count", "shortDescription": {"text": "Unused endpoint: GET /unread-count"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.ts` declares `GET /unread-count` 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-a6c7c815e4bbe342", "name": "Unused endpoint: POST /mark-all-read", "shortDescription": {"text": "Unused endpoint: POST /mark-all-read"}, "fullDescription": {"text": "`packages/core/src/notifications/routes.ts` declares `POST /mark-all-read` 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-7e6adf10bd16b300", "name": "Unused endpoint: POST /:projectId/pm/run", "shortDescription": {"text": "Unused endpoint: POST /:projectId/pm/run"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `POST /:projectId/pm/run` 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-0e947b8400bf863b", "name": "Unused endpoint: POST /:projectId/pm/escalations/:decisionId/respond", "shortDescription": {"text": "Unused endpoint: POST /:projectId/pm/escalations/:decisionId/respond"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `POST /:projectId/pm/escalations/:decisionId/respond` 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-5b0b06fa80fcaefd", "name": "Unused endpoint: GET /:projectId/pm/config", "shortDescription": {"text": "Unused endpoint: GET /:projectId/pm/config"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `GET /:projectId/pm/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0faffda02ff3ecc2", "name": "Unused endpoint: PUT /:projectId/pm/config", "shortDescription": {"text": "Unused endpoint: PUT /:projectId/pm/config"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `PUT /:projectId/pm/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50034f6ac46996aa", "name": "Unused endpoint: GET /:projectId/pm/policies", "shortDescription": {"text": "Unused endpoint: GET /:projectId/pm/policies"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `GET /:projectId/pm/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}}, {"id": "scanner-f0cc8eb54df24208", "name": "Unused endpoint: POST /:projectId/pm/policies", "shortDescription": {"text": "Unused endpoint: POST /:projectId/pm/policies"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `POST /:projectId/pm/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}}, {"id": "scanner-54e7cb9c72084824", "name": "Unused endpoint: PATCH /:projectId/pm/policies/:id", "shortDescription": {"text": "Unused endpoint: PATCH /:projectId/pm/policies/:id"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `PATCH /:projectId/pm/policies/: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-f4cc1987ef057457", "name": "Unused endpoint: DELETE /:projectId/pm/policies/:id", "shortDescription": {"text": "Unused endpoint: DELETE /:projectId/pm/policies/:id"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `DELETE /:projectId/pm/policies/: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-bb9d6ec44a718639", "name": "Unused endpoint: GET /:projectId/pm/decisions", "shortDescription": {"text": "Unused endpoint: GET /:projectId/pm/decisions"}, "fullDescription": {"text": "`packages/core/src/pm/routes.ts` declares `GET /:projectId/pm/decisions` 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-39cbda1740d0429b", "name": "Unused endpoint: USE /local", "shortDescription": {"text": "Unused endpoint: USE /local"}, "fullDescription": {"text": "`packages/core/src/auth/login.ts` declares `USE /local` 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-ebb26d02887b30de", "name": "Unused endpoint: POST /local", "shortDescription": {"text": "Unused endpoint: POST /local"}, "fullDescription": {"text": "`packages/core/src/auth/login.ts` declares `POST /local` 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-1fd8bc559c7934aa", "name": "Unused endpoint: POST /dev/force-verify", "shortDescription": {"text": "Unused endpoint: POST /dev/force-verify"}, "fullDescription": {"text": "`packages/core/src/auth/dev-force-verify.ts` declares `POST /dev/force-verify` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-806a0b5fa537337c", "name": "Unused endpoint: USE /me", "shortDescription": {"text": "Unused endpoint: USE /me"}, "fullDescription": {"text": "`packages/core/src/auth/me.ts` declares `USE /me` 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-a8b6a940e2815697", "name": "Unused endpoint: USE /me/*", "shortDescription": {"text": "Unused endpoint: USE /me/*"}, "fullDescription": {"text": "`packages/core/src/auth/me.ts` declares `USE /me/*` 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-4b0fb29c2a726422", "name": "Unused endpoint: GET /me/preferences", "shortDescription": {"text": "Unused endpoint: GET /me/preferences"}, "fullDescription": {"text": "`packages/core/src/auth/me.ts` declares `GET /me/preferences` 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-a3d271237f61a5d7", "name": "Unused endpoint: PATCH /me/preferences", "shortDescription": {"text": "Unused endpoint: PATCH /me/preferences"}, "fullDescription": {"text": "`packages/core/src/auth/me.ts` declares `PATCH /me/preferences` 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-c8c7a083a4387c82", "name": "Unused endpoint: USE /preferences", "shortDescription": {"text": "Unused endpoint: USE /preferences"}, "fullDescription": {"text": "`packages/core/src/auth/preferences.ts` declares `USE /preferences` 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/19614"}, "properties": {"repository": "SidCorp-co/forge", "repoUrl": "https://github.com/SidCorp-co/forge", "branch": "main"}, "results": [{"ruleId": "scanner-132a090459729554", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/primitives/select.tsx:187"}, "properties": {"repobilityId": "b6c64aa0f358d275", "scanner": "scanner-primary", "fingerprint": "132a090459729554", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-23aa7eb572ace398", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/command-palette.tsx:161"}, "properties": {"repobilityId": "8174dd117812a3f1", "scanner": "scanner-primary", "fingerprint": "23aa7eb572ace398", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-34a1830f1eb41bee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/top-bar.tsx:68"}, "properties": {"repobilityId": "54504f1c9814b404", "scanner": "scanner-primary", "fingerprint": "34a1830f1eb41bee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6948c8de4900aec2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/nav-rail.tsx:344"}, "properties": {"repobilityId": "0034577a9861465d", "scanner": "scanner-primary", "fingerprint": "6948c8de4900aec2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aa59622e989718c0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/design/patterns/pinned-tab-bar.tsx:51"}, "properties": {"repobilityId": "e32141b2e1fdeba9", "scanner": "scanner-primary", "fingerprint": "aa59622e989718c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4aeafe6f8857df01", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/(workspace)/layout.tsx:739"}, "properties": {"repobilityId": "832f48008020c2cd", "scanner": "scanner-primary", "fingerprint": "4aeafe6f8857df01", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ae3b8ee74142711", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/app/kit/page.tsx:250"}, "properties": {"repobilityId": "92759a8aef6d4e6d", "scanner": "scanner-primary", "fingerprint": "2ae3b8ee74142711", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-22e64426882ec3ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-detail-drawer.tsx:138"}, "properties": {"repobilityId": "a5d8077daacfa0ee", "scanner": "scanner-primary", "fingerprint": "22e64426882ec3ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef6a58d178d22788", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/connection-edit-drawer.tsx:115"}, "properties": {"repobilityId": "d72286f819a998fc", "scanner": "scanner-primary", "fingerprint": "ef6a58d178d22788", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d851fc517bd7bb6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/integrations/components/integrations-screen.tsx:81"}, "properties": {"repobilityId": "f7762e4596850215", "scanner": "scanner-primary", "fingerprint": "0d851fc517bd7bb6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eafa7080ee712cbf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/attention/components/attention-screen.tsx:65"}, "properties": {"repobilityId": "20c3c82645906a53", "scanner": "scanner-primary", "fingerprint": "eafa7080ee712cbf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-722868f64e141b2b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-list.tsx:50"}, "properties": {"repobilityId": "170218f0498f26a9", "scanner": "scanner-primary", "fingerprint": "722868f64e141b2b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be460ce3ff107b95", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/projects/components/project-card.tsx:34"}, "properties": {"repobilityId": "a2a0e1fd4063b155", "scanner": "scanner-primary", "fingerprint": "be460ce3ff107b95", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c953b402296742d5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-detail-screen.tsx:323"}, "properties": {"repobilityId": "4c806a54a748867f", "scanner": "scanner-primary", "fingerprint": "c953b402296742d5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2e0eedbd44b87f36", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/issues/components/issue-row-actions.tsx:275"}, "properties": {"repobilityId": "269bf4ff6fcfb5f8", "scanner": "scanner-primary", "fingerprint": "2e0eedbd44b87f36", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f2af425a26e2f158", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/live-runs-card.tsx:60"}, "properties": {"repobilityId": "903229ecdb7ddd20", "scanner": "scanner-primary", "fingerprint": "f2af425a26e2f158", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ba55fd39ac27ba87", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/runners-card.tsx:36"}, "properties": {"repobilityId": "59b6269edf33d271", "scanner": "scanner-primary", "fingerprint": "ba55fd39ac27ba87", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2836e92a4c53a10", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/spend-card.tsx:38"}, "properties": {"repobilityId": "33cb2eb0c63ea16b", "scanner": "scanner-primary", "fingerprint": "d2836e92a4c53a10", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-067da39e3f69527a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/attention-queue.tsx:57"}, "properties": {"repobilityId": "0ecef5289ff27912", "scanner": "scanner-primary", "fingerprint": "067da39e3f69527a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-829aaac64bf2b333", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/status-donut.tsx:34"}, "properties": {"repobilityId": "2e0445f5f52af359", "scanner": "scanner-primary", "fingerprint": "829aaac64bf2b333", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37032ece88cb2689", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-dashboard/components/schedules-card.tsx:36"}, "properties": {"repobilityId": "38ff75625e075611", "scanner": "scanner-primary", "fingerprint": "37032ece88cb2689", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-719b9afe5595376a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/docs/components/docs-screen.tsx:170"}, "properties": {"repobilityId": "2cb980ba6474e38e", "scanner": "scanner-primary", "fingerprint": "719b9afe5595376a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2a8c30820d091ce2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/sessions/components/sessions-screen.tsx:545"}, "properties": {"repobilityId": "ee1f6f366ecf08fa", "scanner": "scanner-primary", "fingerprint": "2a8c30820d091ce2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b4d2cc47d5fd28e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-switcher.tsx:64"}, "properties": {"repobilityId": "677cec978eed8981", "scanner": "scanner-primary", "fingerprint": "b4d2cc47d5fd28e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbf66e935d67124d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-home.tsx:96"}, "properties": {"repobilityId": "bbd2546ebac46281", "scanner": "scanner-primary", "fingerprint": "dbf66e935d67124d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6b568b7caada00f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/orgs-tab.tsx:67"}, "properties": {"repobilityId": "914efd46aad0f423", "scanner": "scanner-primary", "fingerprint": "6b568b7caada00f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1dd7960dc2cde1ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/orgs/components/org-members-card.tsx:203"}, "properties": {"repobilityId": "edf6da134249af0e", "scanner": "scanner-primary", "fingerprint": "1dd7960dc2cde1ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-21c2b958e6a79ad6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/ops-monitor.tsx:217"}, "properties": {"repobilityId": "bf12a3e10b659ceb", "scanner": "scanner-primary", "fingerprint": "21c2b958e6a79ad6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3958e15fe3c7ac07", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/pipeline/components/run-detail.tsx:414"}, "properties": {"repobilityId": "2fa39418caa38d7a", "scanner": "scanner-primary", "fingerprint": "3958e15fe3c7ac07", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6015165b7567878", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/shell/nav-rail-compact.tsx:293"}, "properties": {"repobilityId": "7feb5bd4f440595e", "scanner": "scanner-primary", "fingerprint": "a6015165b7567878", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da3339bbf55b8047", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/schedules/components/schedules-screen.tsx:305"}, "properties": {"repobilityId": "deae59ccdebf2bcd", "scanner": "scanner-primary", "fingerprint": "da3339bbf55b8047", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-db2ac17d18e2cd33", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-card.tsx:58"}, "properties": {"repobilityId": "23ee56a2fa49e93a", "scanner": "scanner-primary", "fingerprint": "db2ac17d18e2cd33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ba792f1240bbde79", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/skills/components/skill-studio-drawer.tsx:70"}, "properties": {"repobilityId": "d8ea190e002cb16b", "scanner": "scanner-primary", "fingerprint": "ba792f1240bbde79", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57d882f1b96e1a2a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/runners-screen.tsx:124"}, "properties": {"repobilityId": "df5afd711b4e2a3c", "scanner": "scanner-primary", "fingerprint": "57d882f1b96e1a2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c9c274dea57ae6e8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/project-runners-screen.tsx:165"}, "properties": {"repobilityId": "7976d8ae01b88e53", "scanner": "scanner-primary", "fingerprint": "c9c274dea57ae6e8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dab0b3fec0ceb6bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/runners/components/device-detail.tsx:146"}, "properties": {"repobilityId": "bd5539f4ec22f0f5", "scanner": "scanner-primary", "fingerprint": "dab0b3fec0ceb6bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-73858d88e786560d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/session-screen.tsx:181"}, "properties": {"repobilityId": "b71618f2604ced31", "scanner": "scanner-primary", "fingerprint": "73858d88e786560d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c6ca4fd0405e4526", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/tool-card.tsx:73"}, "properties": {"repobilityId": "635b907f244d5685", "scanner": "scanner-primary", "fingerprint": "c6ca4fd0405e4526", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6e245d0e24d6eb7a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/conversation-list.tsx:240"}, "properties": {"repobilityId": "3ac476d29103b37d", "scanner": "scanner-primary", "fingerprint": "6e245d0e24d6eb7a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-71b2d2658b88610d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/session/components/chat-screen.tsx:175"}, "properties": {"repobilityId": "81864684d7df69ed", "scanner": "scanner-primary", "fingerprint": "71b2d2658b88610d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-28fef6139436899e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/members-tab.tsx:113"}, "properties": {"repobilityId": "1d032fe65a6fec40", "scanner": "scanner-primary", "fingerprint": "28fef6139436899e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-24b3137d04258608", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/project-settings-screen.tsx:141"}, "properties": {"repobilityId": "daeb40e1406367b3", "scanner": "scanner-primary", "fingerprint": "24b3137d04258608", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0674abf2da3693cb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/project-settings/components/labels-tab.tsx:67"}, "properties": {"repobilityId": "e7a55ff307f662ff", "scanner": "scanner-primary", "fingerprint": "0674abf2da3693cb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aeb2ece8feb1c550", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/kpi-row.tsx:35"}, "properties": {"repobilityId": "5d38bcfd9fcbf386", "scanner": "scanner-primary", "fingerprint": "aeb2ece8feb1c550", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c24768df6f525c0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/spotlight-projects.tsx:27"}, "properties": {"repobilityId": "1dad239f68e4d163", "scanner": "scanner-primary", "fingerprint": "2c24768df6f525c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-69a5cebad68d91dd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/activity-feed.tsx:56"}, "properties": {"repobilityId": "7358cfd19e0dfe88", "scanner": "scanner-primary", "fingerprint": "69a5cebad68d91dd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-50468d57c5d98db0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/work-distribution.tsx:53"}, "properties": {"repobilityId": "b0345e79d75f00de", "scanner": "scanner-primary", "fingerprint": "50468d57c5d98db0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0c00d29c2b0ffdf7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/web-v2/src/features/overview/components/attention-panel.tsx:106"}, "properties": {"repobilityId": "07edf88b36f2d340", "scanner": "scanner-primary", "fingerprint": "0c00d29c2b0ffdf7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-afe3425b6ed39a12", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/diff-summary.tsx:82"}, "properties": {"repobilityId": "61b89c80f9e52a64", "scanner": "scanner-primary", "fingerprint": "afe3425b6ed39a12", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-214e407f7190714e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/notification-bell.tsx:134"}, "properties": {"repobilityId": "f168ce116f08d824", "scanner": "scanner-primary", "fingerprint": "214e407f7190714e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0a5f17e6c9194e68", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/issue-list-item.tsx:18"}, "properties": {"repobilityId": "8c0e13dd696c7c08", "scanner": "scanner-primary", "fingerprint": "0a5f17e6c9194e68", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df4882941dec61c5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/ui/file-upload.tsx:147"}, "properties": {"repobilityId": "f702bf4e319b03a2", "scanner": "scanner-primary", "fingerprint": "df4882941dec61c5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ebc9deeceba3d789", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/message-bubble/diff-summary.tsx:62"}, "properties": {"repobilityId": "7768fd3079ac8d54", "scanner": "scanner-primary", "fingerprint": "ebc9deeceba3d789", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3950516bc920e5bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-relations.tsx:65"}, "properties": {"repobilityId": "cda0afdc00532a8a", "scanner": "scanner-primary", "fingerprint": "3950516bc920e5bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9e1482500aaa0bdd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-agent-sessions.tsx:27"}, "properties": {"repobilityId": "b4a87236df9a8e01", "scanner": "scanner-primary", "fingerprint": "9e1482500aaa0bdd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-893f27b24d7f6883", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/components/issue-detail/issue-attachments.tsx:54"}, "properties": {"repobilityId": "a84020f7b441b176", "scanner": "scanner-primary", "fingerprint": "893f27b24d7f6883", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-29ede3d51bca6275", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/issues.ts:17"}, "properties": {"repobilityId": "d4209d85463195c2", "scanner": "scanner-primary", "fingerprint": "29ede3d51bca6275", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0473a96b99a0f006", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/agent-sessions.ts:119"}, "properties": {"repobilityId": "ceba0be52b12aad6", "scanner": "scanner-primary", "fingerprint": "0473a96b99a0f006", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-27532b89bb29a698", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/lib/api/tasks.ts:10"}, "properties": {"repobilityId": "49c207393a9198dc", "scanner": "scanner-primary", "fingerprint": "27532b89bb29a698", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-010507ca9c458f2d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectOverview.tsx:145"}, "properties": {"repobilityId": "380e8b8e373ff91b", "scanner": "scanner-primary", "fingerprint": "010507ca9c458f2d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a183325ae0fa52c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/ProjectPipeline.tsx:207"}, "properties": {"repobilityId": "795f9038223b672f", "scanner": "scanner-primary", "fingerprint": "3a183325ae0fa52c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a7bc1e402980c89f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/project-issues/status-multi-select.tsx:47"}, "properties": {"repobilityId": "3eb64318a54de293", "scanner": "scanner-primary", "fingerprint": "a7bc1e402980c89f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0d6d909474f1535", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.tsx:114"}, "properties": {"repobilityId": "762d912764cd5a56", "scanner": "scanner-primary", "fingerprint": "b0d6d909474f1535", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c1d82d0354c01eac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/AgentChat.tsx:34"}, "properties": {"repobilityId": "7b9ca0b8bb844522", "scanner": "scanner-primary", "fingerprint": "c1d82d0354c01eac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d1d70cb4c8676f55", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45"}, "properties": {"repobilityId": "75165037a91225e0", "scanner": "scanner-primary", "fingerprint": "d1d70cb4c8676f55", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-351dc4dc7cd22e73", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 packages/dev/src/pages/project/agent-chat/AgentChatPromptReview.tsx:22"}, "properties": {"repobilityId": "539211162366e6b3", "scanner": "scanner-primary", "fingerprint": "351dc4dc7cd22e73", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2be9e6af8ba19ad6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/dev/src/hooks/use-agent-commands.ts:174"}, "properties": {"repobilityId": "0e28e756851eb338", "scanner": "scanner-primary", "fingerprint": "2be9e6af8ba19ad6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-317e1d5aecdbed9e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/tests/integration/session-group-resume-e2e.test.ts:364"}, "properties": {"repobilityId": "18f9029cb8b0f481", "scanner": "scanner-primary", "fingerprint": "317e1d5aecdbed9e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-423b1eb89f6d96e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/scripts/backfill-agent-session-turns.ts:36"}, "properties": {"repobilityId": "10366c2ac5bdef5f", "scanner": "scanner-primary", "fingerprint": "423b1eb89f6d96e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd6640183783928b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/install/fetch-release.ts:89"}, "properties": {"repobilityId": "f5ae011cdbdc01ad", "scanner": "scanner-primary", "fingerprint": "cd6640183783928b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16efd6911066d1ab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/git/branches.ts:71"}, "properties": {"repobilityId": "2dc980e084b4d659", "scanner": "scanner-primary", "fingerprint": "16efd6911066d1ab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-07ef73864601bbe7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/agent-sessions/routes.ts:1483"}, "properties": {"repobilityId": "9fb4df517992b768", "scanner": "scanner-primary", "fingerprint": "07ef73864601bbe7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ac70e8f5ffb74e3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/core/src/db/migrate.ts:16"}, "properties": {"repobilityId": "df12d6de4da4d438", "scanner": "scanner-primary", "fingerprint": "ac70e8f5ffb74e3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41a59f4b01c9249c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/routes.ts:475"}, "properties": {"repobilityId": "52e247f45f0a67ad", "scanner": "scanner-primary", "fingerprint": "41a59f4b01c9249c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a8ddd65598812c85", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/core/src/schedules/dispatch.ts:104"}, "properties": {"repobilityId": "6cd9007fe40df814", "scanner": "scanner-primary", "fingerprint": "a8ddd65598812c85", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2bcd707ad62813b7", "level": "warning", "message": {"text": "Dockerfile runs as root: packages/web-v2/Dockerfile"}, "properties": {"repobilityId": "f840ac095d74bc3f", "scanner": "scanner-primary", "fingerprint": "2bcd707ad62813b7", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-dcd99bc1b7ab5aed", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "c01c5ac6e9eac266", "scanner": "scanner-primary", "fingerprint": "dcd99bc1b7ab5aed", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-dcd99bc1b7ab5aed", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "5811c5cc810db7d9", "scanner": "scanner-primary", "fingerprint": "dcd99bc1b7ab5aed", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/Dockerfile"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-52518a2a97fc1c0e", "level": "warning", "message": {"text": "Dockerfile runs as root: packages/core/Dockerfile"}, "properties": {"repobilityId": "32436bf756b689e6", "scanner": "scanner-primary", "fingerprint": "52518a2a97fc1c0e", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-02ad50ba582231c9", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "9905a2365eb91b73", "scanner": "scanner-primary", "fingerprint": "02ad50ba582231c9", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-02ad50ba582231c9", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "c6439908627d7f80", "scanner": "scanner-primary", "fingerprint": "02ad50ba582231c9", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/Dockerfile"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-d46c5695c90b9848", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-source-language.mjs:30"}, "properties": {"repobilityId": "c43416a989688eb1", "scanner": "scanner-primary", "fingerprint": "d46c5695c90b9848", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-source-language.mjs"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-9129cb27a99a0d2f", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/02 Issues.html:131"}, "properties": {"repobilityId": "45c10802be81db50", "scanner": "scanner-primary", "fingerprint": "9129cb27a99a0d2f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/02 Issues.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-fd6eb41056825fb1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/web-v2/design/draft-screen/01 Dashboard.html:173"}, "properties": {"repobilityId": "bc27df02bbad4624", "scanner": "scanner-primary", "fingerprint": "fd6eb41056825fb1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/01 Dashboard.html"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-eb71ff1b21178892", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/01 Dashboard.html:131"}, "properties": {"repobilityId": "bc6409991870e146", "scanner": "scanner-primary", "fingerprint": "eb71ff1b21178892", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/01 Dashboard.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-2a5745a7765accb5", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/03 Issue detail.html:131"}, "properties": {"repobilityId": "ae869eee8a303ae6", "scanner": "scanner-primary", "fingerprint": "2a5745a7765accb5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/03 Issue detail.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-447357af7d124750", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/06 Library.html:131"}, "properties": {"repobilityId": "c1d95a3ab860f8c6", "scanner": "scanner-primary", "fingerprint": "447357af7d124750", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/06 Library.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-eff723ba9635072d", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/10 Runners.html:131"}, "properties": {"repobilityId": "016ca9209d00761a", "scanner": "scanner-primary", "fingerprint": "eff723ba9635072d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/10 Runners.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-fb3f331ef53cb09d", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/05 Agent run.html:131"}, "properties": {"repobilityId": "85c546aaea75174e", "scanner": "scanner-primary", "fingerprint": "fb3f331ef53cb09d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/05 Agent run.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-5a9da8579116cb08", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/08 Workspace overview.html:131"}, "properties": {"repobilityId": "c09bd7ccae05f72e", "scanner": "scanner-primary", "fingerprint": "5a9da8579116cb08", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/08 Workspace overview.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-0b52198e60911c34", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/04 Agents.html:131"}, "properties": {"repobilityId": "004d6a5243f6df65", "scanner": "scanner-primary", "fingerprint": "0b52198e60911c34", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/04 Agents.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-2174e7ae26c6c73a", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/07 Automation.html:131"}, "properties": {"repobilityId": "62522a2c0690ac6b", "scanner": "scanner-primary", "fingerprint": "2174e7ae26c6c73a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/07 Automation.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-0cb89248b980784b", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in packages/web-v2/design/draft-screen/09 Usage.html:131"}, "properties": {"repobilityId": "90424e703532cce4", "scanner": "scanner-primary", "fingerprint": "0cb89248b980784b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/design/draft-screen/09 Usage.html"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-c5c06a0fb394d559", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in packages/web-v2/src/app/forge-config/route.ts:44"}, "properties": {"repobilityId": "db46d7379fb69043", "scanner": "scanner-primary", "fingerprint": "c5c06a0fb394d559", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/src/app/forge-config/route.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-dcfafc4e9cb17ffa", "level": "error", "message": {"text": "Possible secret in packages/web-v2/src/features/auth/validation.ts"}, "properties": {"repobilityId": "f6c319c4cb1e7850", "scanner": "scanner-primary", "fingerprint": "dcfafc4e9cb17ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/src/features/auth/validation.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-dcfafc4e9cb17ffa", "level": "error", "message": {"text": "Possible secret in packages/web-v2/src/features/auth/validation.ts"}, "properties": {"repobilityId": "f6c319c4cb1e7850", "scanner": "scanner-primary", "fingerprint": "dcfafc4e9cb17ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/src/features/auth/validation.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-dcfafc4e9cb17ffa", "level": "error", "message": {"text": "Possible secret in packages/web-v2/src/features/auth/validation.ts"}, "properties": {"repobilityId": "f6c319c4cb1e7850", "scanner": "scanner-primary", "fingerprint": "dcfafc4e9cb17ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/src/features/auth/validation.ts"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-dcfafc4e9cb17ffa", "level": "error", "message": {"text": "Possible secret in packages/web-v2/src/features/auth/validation.ts"}, "properties": {"repobilityId": "f6c319c4cb1e7850", "scanner": "scanner-primary", "fingerprint": "dcfafc4e9cb17ffa", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/src/features/auth/validation.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-4fcd3b8fea8cc294", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/integrations/routes.ts:1"}, "properties": {"repobilityId": "a68b96665b7a20f2", "scanner": "scanner-primary", "fingerprint": "4fcd3b8fea8cc294", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/integrations/routes.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7dc88e86ef48789c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/git/branches.ts:14"}, "properties": {"repobilityId": "b7eb1cbf25b951eb", "scanner": "scanner-primary", "fingerprint": "7dc88e86ef48789c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/git/branches.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3eb9d6745acac8cd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/core/src/git/ssh-keys.ts:17"}, "properties": {"repobilityId": "4c36efef43ccfcd0", "scanner": "scanner-primary", "fingerprint": "3eb9d6745acac8cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/src/git/ssh-keys.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-740b88ab8dd23d2f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6c22316cfcffbcef", "scanner": "scanner-primary", "fingerprint": "740b88ab8dd23d2f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto-merge.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-768e8f28c1850d98", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f3c306ca3743dfa1", "scanner": "scanner-primary", "fingerprint": "768e8f28c1850d98", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto-merge.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6c41ed8e208e95fe", "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": 233}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0dc584a111ffc00", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e54fac6c290138e", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "064101bca44dd360", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a76b700066ca8f5", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eeb76410cc935c30", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8d11574406cfe94", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af5e551ba7ffb674", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "497b2c786cf59a0d", "scanner": "scanner-primary", "fingerprint": "af5e551ba7ffb674", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/runner-release.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-69500f428a092d7d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "eafbb573df826f18", "scanner": "scanner-primary", "fingerprint": "69500f428a092d7d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/runner-release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f05a9395fff67c83", "level": "note", "message": {"text": "Very large file: packages/core/src/integrations/routes.ts (1400 lines)"}, "properties": {"repobilityId": "ad47d601fec64ac6", "scanner": "scanner-primary", "fingerprint": "f05a9395fff67c83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e77248e8040d5d3f", "level": "note", "message": {"text": "Very large file: packages/core/src/projects/routes.test.ts (1563 lines)"}, "properties": {"repobilityId": "a9e0ef5bb9784b97", "scanner": "scanner-primary", "fingerprint": "e77248e8040d5d3f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-421c59ee0a0c5406", "level": "note", "message": {"text": "Very large file: packages/core/src/agent-sessions/routes.ts (2005 lines)"}, "properties": {"repobilityId": "be36f7bbe614c4a3", "scanner": "scanner-primary", "fingerprint": "421c59ee0a0c5406", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c701be6588482e0f", "level": "note", "message": {"text": "Very large file: packages/core/src/db/schema.ts (2529 lines)"}, "properties": {"repobilityId": "e989c061bfc67b7e", "scanner": "scanner-primary", "fingerprint": "c701be6588482e0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6fa560c4ba32e748", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/web-v2/package.json"}, "properties": {"repobilityId": "539c65b3f439c5ae", "scanner": "scanner-primary", "fingerprint": "6fa560c4ba32e748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/web-v2/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-480337df8d279ba0", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/observability/package.json"}, "properties": {"repobilityId": "c41ee2659f3040d3", "scanner": "scanner-primary", "fingerprint": "480337df8d279ba0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/observability/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-889092dbc9ab7483", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/dev/package.json"}, "properties": {"repobilityId": "3e85db55874f1a72", "scanner": "scanner-primary", "fingerprint": "889092dbc9ab7483", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/dev/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28e92806c0db3cd2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "properties": {"repobilityId": "8640e46be7e3f9b2", "scanner": "scanner-primary", "fingerprint": "28e92806c0db3cd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f85d8f0719e22fa8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/contracts/package.json"}, "properties": {"repobilityId": "9533b27beaa7d171", "scanner": "scanner-primary", "fingerprint": "f85d8f0719e22fa8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/contracts/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "5e5f3e1d1c074d45", "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": "762d7fce5824f1ff", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "36bff93ea90d35ff", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3113dc00110616b6", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "3525a9891b8641c6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-5aae10debcfd1cba", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: packages/core/skills/forge-triage/SKILL.md"}, "properties": {"repobilityId": "69887a1f5d011309", "scanner": "scanner-primary", "fingerprint": "5aae10debcfd1cba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/skills/forge-triage/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5e913de01a1aac0a", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/check-source-language.mjs:8"}, "properties": {"repobilityId": "2818bceede6e7893", "scanner": "scanner-primary", "fingerprint": "5e913de01a1aac0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2049705ff033f7f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/next.config.ts:27"}, "properties": {"repobilityId": "6ac15f5614ebe321", "scanner": "scanner-primary", "fingerprint": "2049705ff033f7f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f636152e7640730c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/scripts/gen-help-content.mjs:2"}, "properties": {"repobilityId": "891bfd881f48d483", "scanner": "scanner-primary", "fingerprint": "f636152e7640730c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ecca4dfd4333db4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/page-container.tsx:3"}, "properties": {"repobilityId": "836ebc4afe52f211", "scanner": "scanner-primary", "fingerprint": "2ecca4dfd4333db4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8df5a3d57c3457b3", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/design/patterns/screen-tabs.tsx:3"}, "properties": {"repobilityId": "aeaabbeef7961c5c", "scanner": "scanner-primary", "fingerprint": "8df5a3d57c3457b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e545b90a7e1458e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/design/patterns/markdown.tsx:3"}, "properties": {"repobilityId": "b64e38aade68dbc9", "scanner": "scanner-primary", "fingerprint": "e545b90a7e1458e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eca3a8b0ddbb893", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/providers/auth-provider.tsx:3"}, "properties": {"repobilityId": "485c3da3b75b1e05", "scanner": "scanner-primary", "fingerprint": "4eca3a8b0ddbb893", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4be4dd51f611d5f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/app/layout.tsx:40"}, "properties": {"repobilityId": "5e8f0cce2908ccea", "scanner": "scanner-primary", "fingerprint": "f4be4dd51f611d5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bff1c3a9460b49b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/app/invite/accept/page.tsx:8"}, "properties": {"repobilityId": "2ef9aa354443e000", "scanner": "scanner-primary", "fingerprint": "4bff1c3a9460b49b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c515ead327ed417", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/app/(workspace)/layout.tsx:184"}, "properties": {"repobilityId": "5d795191f36a6b3a", "scanner": "scanner-primary", "fingerprint": "1c515ead327ed417", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95c11f5e37d69d5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/app/(workspace)/projects/[slug]/agents/[sessionId]/page.tsx:3"}, "properties": {"repobilityId": "8f7aa2678af4a2e1", "scanner": "scanner-primary", "fingerprint": "95c11f5e37d69d5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2dabc33e4c7ff67", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/lib/api/error.ts:36"}, "properties": {"repobilityId": "f3f82fb4689646cb", "scanner": "scanner-primary", "fingerprint": "b2dabc33e4c7ff67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c7bca4e2f43b7a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/lib/api/client.ts:1"}, "properties": {"repobilityId": "87e3fab3524c3671", "scanner": "scanner-primary", "fingerprint": "1c7bca4e2f43b7a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50940034c086b316", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/lib/api/client.ts:69"}, "properties": {"repobilityId": "50ac851c6494103c", "scanner": "scanner-primary", "fingerprint": "50940034c086b316", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d42d26170f93a5e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/lib/utils/use-tab-param.ts:3"}, "properties": {"repobilityId": "0472e3f84ad7925c", "scanner": "scanner-primary", "fingerprint": "2d42d26170f93a5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d629a14629b4081d", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/lib/utils/use-location-search.ts:3"}, "properties": {"repobilityId": "c98701e42740e294", "scanner": "scanner-primary", "fingerprint": "d629a14629b4081d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de56c36377ccc78c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/lib/ws/event-router.ts:218"}, "properties": {"repobilityId": "8540f58e1acc60a3", "scanner": "scanner-primary", "fingerprint": "de56c36377ccc78c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53658b4d819f3181", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/api.ts:100"}, "properties": {"repobilityId": "d1de885a7ca002ea", "scanner": "scanner-primary", "fingerprint": "53658b4d819f3181", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f63779931ba97bc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/hooks.ts:208"}, "properties": {"repobilityId": "0e794c5d16f5a192", "scanner": "scanner-primary", "fingerprint": "f63779931ba97bc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c60392f9e6ac743d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/derive.ts:3"}, "properties": {"repobilityId": "49512e6285450213", "scanner": "scanner-primary", "fingerprint": "c60392f9e6ac743d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb596b03bcc5395e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/types.ts:3"}, "properties": {"repobilityId": "25abaf466503bf43", "scanner": "scanner-primary", "fingerprint": "eb596b03bcc5395e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef5b06a34fd9882d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/connection-edit-drawer.tsx:3"}, "properties": {"repobilityId": "3559521d4614d9fd", "scanner": "scanner-primary", "fingerprint": "ef5b06a34fd9882d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5aab2ce07c7e333c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/integrations/components/mcp-servers-panel.tsx:3"}, "properties": {"repobilityId": "fbfba0be5484caa1", "scanner": "scanner-primary", "fingerprint": "5aab2ce07c7e333c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6bf7e41857f82d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/integrations/components/project-integrations-panel.tsx:3"}, "properties": {"repobilityId": "b4f367ab32db3f10", "scanner": "scanner-primary", "fingerprint": "d6bf7e41857f82d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-395255d8d58ec507", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/integrations/components/integrations-screen.tsx:5"}, "properties": {"repobilityId": "5dbb565c9e5a28d0", "scanner": "scanner-primary", "fingerprint": "395255d8d58ec507", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-801dbe15ffad4354", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/settings/mcp.ts:3"}, "properties": {"repobilityId": "d69a632719c016be", "scanner": "scanner-primary", "fingerprint": "801dbe15ffad4354", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24a4ec87356aed05", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/mcp.ts:158"}, "properties": {"repobilityId": "3790273c83225944", "scanner": "scanner-primary", "fingerprint": "24a4ec87356aed05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3e15d247f9c795e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/tokens-tab.tsx:7"}, "properties": {"repobilityId": "6b7407c246a5cea6", "scanner": "scanner-primary", "fingerprint": "c3e15d247f9c795e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a7e999acbfa4d0f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/settings/components/mcp-tab.tsx:3"}, "properties": {"repobilityId": "464bed2985a5ae72", "scanner": "scanner-primary", "fingerprint": "7a7e999acbfa4d0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1b0992da358eda7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/web-v2/src/features/settings/components/mcp-tab.tsx:230"}, "properties": {"repobilityId": "6c5c3910f40cda76", "scanner": "scanner-primary", "fingerprint": "b1b0992da358eda7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f91020b443091dcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/settings-screen.tsx:3"}, "properties": {"repobilityId": "a9507a052319ae2e", "scanner": "scanner-primary", "fingerprint": "f91020b443091dcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d38e06ab9d462f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/settings/components/notifications-tab.tsx:3"}, "properties": {"repobilityId": "ff55417b7287646f", "scanner": "scanner-primary", "fingerprint": "3d38e06ab9d462f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd8d571572a88a0e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/automation/hooks.ts:3"}, "properties": {"repobilityId": "2812410a048b5a13", "scanner": "scanner-primary", "fingerprint": "bd8d571572a88a0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f20b0342dd3a5e88", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/automation/components/automation-screen.tsx:3"}, "properties": {"repobilityId": "b0d1fb60c1871f99", "scanner": "scanner-primary", "fingerprint": "f20b0342dd3a5e88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64e61201b380b841", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/library/components/library-screen.tsx:3"}, "properties": {"repobilityId": "949041f140660c2b", "scanner": "scanner-primary", "fingerprint": "64e61201b380b841", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec9b27383d91c27e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/usage/components/usage-screen.tsx:9"}, "properties": {"repobilityId": "1eaed4c4c2f9e801", "scanner": "scanner-primary", "fingerprint": "ec9b27383d91c27e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed62e18c312e4ef2", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/attention/hooks.ts:5"}, "properties": {"repobilityId": "9d6759b97d27013b", "scanner": "scanner-primary", "fingerprint": "ed62e18c312e4ef2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d65d53932b77be7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/attention/types.ts:1"}, "properties": {"repobilityId": "dbe14930f1b6e8ed", "scanner": "scanner-primary", "fingerprint": "3d65d53932b77be7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e9171312f7e69ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/attention/components/attention-screen.tsx:3"}, "properties": {"repobilityId": "7aecf53d9c2df627", "scanner": "scanner-primary", "fingerprint": "5e9171312f7e69ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebf7e54bf1efc6ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/hooks.ts:5"}, "properties": {"repobilityId": "cd58bd0e18eeb0f5", "scanner": "scanner-primary", "fingerprint": "ebf7e54bf1efc6ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5926939cf66d708b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/projects/types.ts:1"}, "properties": {"repobilityId": "a28d201818c1cf28", "scanner": "scanner-primary", "fingerprint": "5926939cf66d708b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b069162e3e2c4c84", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/project-flyout.tsx:3"}, "properties": {"repobilityId": "c51b5567d97ae608", "scanner": "scanner-primary", "fingerprint": "b069162e3e2c4c84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9ab8c3e260bca28", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/web-v2/src/features/projects/components/new-project-dialog.tsx:3"}, "properties": {"repobilityId": "53c49e8ccaf3f086", "scanner": "scanner-primary", "fingerprint": "b9ab8c3e260bca28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-634583c39de699b4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/projects/components/projects-console.tsx:61"}, "properties": {"repobilityId": "09893599159172c5", "scanner": "scanner-primary", "fingerprint": "634583c39de699b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94fb31b5260e4e23", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/api.ts:1"}, "properties": {"repobilityId": "e520785b91661e74", "scanner": "scanner-primary", "fingerprint": "94fb31b5260e4e23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bba52dbcb1cb822", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/detail-hooks.ts:5"}, "properties": {"repobilityId": "8517955821cb7a14", "scanner": "scanner-primary", "fingerprint": "4bba52dbcb1cb822", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-264802e0ff5c989e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/hooks.ts:5"}, "properties": {"repobilityId": "16098db641462a20", "scanner": "scanner-primary", "fingerprint": "264802e0ff5c989e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d64e032e6bef352", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/types.ts:3"}, "properties": {"repobilityId": "245b7d74120516aa", "scanner": "scanner-primary", "fingerprint": "6d64e032e6bef352", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f5e9aaf70bb5dd9", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/step-artifact-card.tsx:3"}, "properties": {"repobilityId": "89566282288e1bce", "scanner": "scanner-primary", "fingerprint": "6f5e9aaf70bb5dd9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7cf93f7d978e346", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/web-v2/src/features/issues/components/issues-screen.tsx:12"}, "properties": {"repobilityId": "530270b2e3798185", "scanner": "scanner-primary", "fingerprint": "f7cf93f7d978e346", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfee39fe13ff1f35", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issue-table-row.tsx:3"}, "properties": {"repobilityId": "6fa83e1001bbad7a", "scanner": "scanner-primary", "fingerprint": "cfee39fe13ff1f35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4a9d6ec0ce6eea6", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/issue-quick-actions.tsx:3"}, "properties": {"repobilityId": "00afa72cbcd092e7", "scanner": "scanner-primary", "fingerprint": "c4a9d6ec0ce6eea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0251f92355190999", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/issues-list-view.tsx:27"}, "properties": {"repobilityId": "193cc38edb8d5930", "scanner": "scanner-primary", "fingerprint": "0251f92355190999", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14e9cd199f84087e", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/web-v2/src/features/issues/components/issues-insights-view.tsx:3"}, "properties": {"repobilityId": "af5a307043e859b4", "scanner": "scanner-primary", "fingerprint": "14e9cd199f84087e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dccef1d334b04c56", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/issues/components/session-group-timeline.tsx:3"}, "properties": {"repobilityId": "32967a9dc555790c", "scanner": "scanner-primary", "fingerprint": "dccef1d334b04c56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38dc20fd17a470e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/issue-ref-badge.tsx:3"}, "properties": {"repobilityId": "b52ae3d52482ef67", "scanner": "scanner-primary", "fingerprint": "38dc20fd17a470e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03756a11406af83b", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/issues/components/issue-row-actions.tsx:5"}, "properties": {"repobilityId": "83e8ac1fad947547", "scanner": "scanner-primary", "fingerprint": "03756a11406af83b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5df4870c3ec15df6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/live-agent-panel.tsx:3"}, "properties": {"repobilityId": "06dbe5f6aa0aa0f8", "scanner": "scanner-primary", "fingerprint": "5df4870c3ec15df6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e87016ca3e66421", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/bulk-action-bar.tsx:8"}, "properties": {"repobilityId": "25bee410fd6cfb25", "scanner": "scanner-primary", "fingerprint": "2e87016ca3e66421", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-751628cbf656fa6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/issues/components/blocker-banner.tsx:3"}, "properties": {"repobilityId": "35b887bb8aa2e4fe", "scanner": "scanner-primary", "fingerprint": "751628cbf656fa6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ad36d6399af7e10", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/new-issue-dialog.tsx:3"}, "properties": {"repobilityId": "a947b65ce7b3828b", "scanner": "scanner-primary", "fingerprint": "8ad36d6399af7e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-863d680c149bd0cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/issues/components/attachment-list.tsx:3"}, "properties": {"repobilityId": "e978efb24f8bf7a8", "scanner": "scanner-primary", "fingerprint": "863d680c149bd0cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92e35f093ef5ef0f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/project-dashboard/derive.ts:1"}, "properties": {"repobilityId": "18a170152e43497d", "scanner": "scanner-primary", "fingerprint": "92e35f093ef5ef0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28103d2eaa95931a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-dashboard/components/attention-queue.tsx:3"}, "properties": {"repobilityId": "abf80832544396f5", "scanner": "scanner-primary", "fingerprint": "28103d2eaa95931a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-161d955342f14068", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/activity/hooks.ts:5"}, "properties": {"repobilityId": "946edaf4ed270895", "scanner": "scanner-primary", "fingerprint": "161d955342f14068", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bc755a536766ec5", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/activity/types.ts:3"}, "properties": {"repobilityId": "a7562b0172b6dc57", "scanner": "scanner-primary", "fingerprint": "9bc755a536766ec5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdfe8d2e9cd34f05", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/docs/components/docs-screen.tsx:3"}, "properties": {"repobilityId": "3acaddefd13d6b33", "scanner": "scanner-primary", "fingerprint": "fdfe8d2e9cd34f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f677569fb5fba0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/hooks.ts:5"}, "properties": {"repobilityId": "4d2e5ff5c34c4bbc", "scanner": "scanner-primary", "fingerprint": "0f677569fb5fba0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3ba5dce0acf4dcf", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/sessions/types.ts:1"}, "properties": {"repobilityId": "92cf9152344c78c8", "scanner": "scanner-primary", "fingerprint": "a3ba5dce0acf4dcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94e8f49019452b20", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/sessions/components/fleet-strip.tsx:3"}, "properties": {"repobilityId": "af0fc24b12a893c5", "scanner": "scanner-primary", "fingerprint": "94e8f49019452b20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81c324e196aad7c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/sessions/components/sessions-screen.tsx:3"}, "properties": {"repobilityId": "fd53a959f3647058", "scanner": "scanner-primary", "fingerprint": "81c324e196aad7c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f5d83b05115d2f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/active-org.tsx:3"}, "properties": {"repobilityId": "96a3ae638357c28d", "scanner": "scanner-primary", "fingerprint": "6f5d83b05115d2f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87038f6d202a69f0", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/orgs/components/org-switcher.tsx:3"}, "properties": {"repobilityId": "eb022c5f8df2a42e", "scanner": "scanner-primary", "fingerprint": "87038f6d202a69f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2dc0d76c692988c", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/orgs/components/org-home.tsx:3"}, "properties": {"repobilityId": "258c4cc3a2c13826", "scanner": "scanner-primary", "fingerprint": "b2dc0d76c692988c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55557ce12d6c7e3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/orgs/components/org-members-card.tsx:3"}, "properties": {"repobilityId": "e2e2a04dd5d9ce53", "scanner": "scanner-primary", "fingerprint": "55557ce12d6c7e3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8a7d273dbba3e84", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/web-v2/src/features/agents/components/agents-screen.tsx:7"}, "properties": {"repobilityId": "18737c7c453a4044", "scanner": "scanner-primary", "fingerprint": "f8a7d273dbba3e84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-566791d91e2db12a", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/api.ts:1"}, "properties": {"repobilityId": "7e431756fbc7a14f", "scanner": "scanner-primary", "fingerprint": "566791d91e2db12a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-335f73dae7a502b9", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/hooks.ts:5"}, "properties": {"repobilityId": "79d5960942f5506b", "scanner": "scanner-primary", "fingerprint": "335f73dae7a502b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef9f182c63ebe6d8", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/pipeline/types.ts:1"}, "properties": {"repobilityId": "f97baa97c72badc4", "scanner": "scanner-primary", "fingerprint": "ef9f182c63ebe6d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e7fccb5d16cda1d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/pipeline/components/pipeline-board.tsx:3"}, "properties": {"repobilityId": "517bd24fdcdfc94f", "scanner": "scanner-primary", "fingerprint": "3e7fccb5d16cda1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b832ad4cd12f3db4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/pipeline/components/ops-monitor.tsx:3"}, "properties": {"repobilityId": "d2f3e582b6f47773", "scanner": "scanner-primary", "fingerprint": "b832ad4cd12f3db4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-581e0e6472d4f542", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/pipeline/components/run-detail.tsx:3"}, "properties": {"repobilityId": "3f881df2ec5c846a", "scanner": "scanner-primary", "fingerprint": "581e0e6472d4f542", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-546e4296e3157307", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/shell/nav-rail-compact.tsx:3"}, "properties": {"repobilityId": "e6476e940a217bc4", "scanner": "scanner-primary", "fingerprint": "546e4296e3157307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e51eb8a13ecb26ce", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/skills/types.ts:1"}, "properties": {"repobilityId": "320fa68d7a696bb4", "scanner": "scanner-primary", "fingerprint": "e51eb8a13ecb26ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34ca55d587f911c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/skills/components/smoke-verify-panel.tsx:3"}, "properties": {"repobilityId": "b4c46dcb4d55c457", "scanner": "scanner-primary", "fingerprint": "34ca55d587f911c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea423ec0d4a961b8", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/runners/components/project-runners-screen.tsx:3"}, "properties": {"repobilityId": "d7ff991dd275e35a", "scanner": "scanner-primary", "fingerprint": "ea423ec0d4a961b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efcbdc5c2dda29f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/session/hooks.ts:5"}, "properties": {"repobilityId": "ed44eb6271f5e642", "scanner": "scanner-primary", "fingerprint": "efcbdc5c2dda29f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3f9130e6985bf17", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/session/types.ts:5"}, "properties": {"repobilityId": "757336c1a7806670", "scanner": "scanner-primary", "fingerprint": "b3f9130e6985bf17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36e695f21e84f4a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/session/components/context-rail.tsx:116"}, "properties": {"repobilityId": "332c21fc6d95aeba", "scanner": "scanner-primary", "fingerprint": "36e695f21e84f4a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cff0178209035ea5", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/conversation-list.tsx:3"}, "properties": {"repobilityId": "d311c2bebf3731fa", "scanner": "scanner-primary", "fingerprint": "cff0178209035ea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed725f1054b0444f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/web-v2/src/features/session/components/chat-screen.tsx:3"}, "properties": {"repobilityId": "e0c69ccca2ede474", "scanner": "scanner-primary", "fingerprint": "ed725f1054b0444f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e151040d842ab7b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/types.ts:1"}, "properties": {"repobilityId": "93c8d1059c151750", "scanner": "scanner-primary", "fingerprint": "e151040d842ab7b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f62c39dba0075585", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/members-tab.tsx:19"}, "properties": {"repobilityId": "a35a75e66b80602a", "scanner": "scanner-primary", "fingerprint": "f62c39dba0075585", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20ea47286b62452e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/integrations-tab.tsx:3"}, "properties": {"repobilityId": "36ffcb19f3b72075", "scanner": "scanner-primary", "fingerprint": "20ea47286b62452e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90c1489c7d70f3ef", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/project-settings/components/session-groups-section.tsx:9"}, "properties": {"repobilityId": "f136387d405c9444", "scanner": "scanner-primary", "fingerprint": "90c1489c7d70f3ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7d6c34adcb3e4a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/testing-tab.tsx:3"}, "properties": {"repobilityId": "e9e44f7e210ade9c", "scanner": "scanner-primary", "fingerprint": "c7d6c34adcb3e4a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3805876c4160b61", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/mcp-servers-section.tsx:5"}, "properties": {"repobilityId": "e886a389e91794f1", "scanner": "scanner-primary", "fingerprint": "a3805876c4160b61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e37d919f540e1885", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/web-v2/src/features/project-settings/components/advanced-tab.tsx:15"}, "properties": {"repobilityId": "1ee9e75c2f61c8c1", "scanner": "scanner-primary", "fingerprint": "e37d919f540e1885", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa822cf5d1863289", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/project-settings/components/project-settings-screen.tsx:3"}, "properties": {"repobilityId": "6235622142be2217", "scanner": "scanner-primary", "fingerprint": "aa822cf5d1863289", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfd135b8ece3fd11", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/web-v2/src/features/project-settings/components/pipeline-tab.tsx:3"}, "properties": {"repobilityId": "bdac228f86d9e5e0", "scanner": "scanner-primary", "fingerprint": "dfd135b8ece3fd11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ceabefc745a22b32", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/web-v2/src/features/overview/components/overview-screen.tsx:3"}, "properties": {"repobilityId": "7d15cfea830e9ebb", "scanner": "scanner-primary", "fingerprint": "ceabefc745a22b32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53e5f9bfbab25581", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/activity-feed.tsx:1"}, "properties": {"repobilityId": "261e3bd8c686e380", "scanner": "scanner-primary", "fingerprint": "53e5f9bfbab25581", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-515b528a66391da7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/web-v2/src/features/overview/components/attention-panel.tsx:1"}, "properties": {"repobilityId": "8b694e38d315bc11", "scanner": "scanner-primary", "fingerprint": "515b528a66391da7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32b6c0b306d40270", "level": "note", "message": {"text": "Legacy-named symbol `msg_old` in packages/tests/web/hooks/agent-reducer.test.ts:188"}, "properties": {"repobilityId": "2c9798e164929e95", "scanner": "scanner-primary", "fingerprint": "32b6c0b306d40270", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7eeb226f9f9ceb74", "level": "note", "message": {"text": "Legacy-named symbol `toLegacy` in packages/tests/web/features/activity/api/activity-api.test.ts:4"}, "properties": {"repobilityId": "b744734a0aefb453", "scanner": "scanner-primary", "fingerprint": "7eeb226f9f9ceb74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-726c4a1eaa9ff9f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/tests/web/features/pipeline/session-groups-config.test.ts:10"}, "properties": {"repobilityId": "986563c815ac3236", "scanner": "scanner-primary", "fingerprint": "726c4a1eaa9ff9f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-236e89f46f448d9a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/tests/dev/stores/auth-store.test.ts:496"}, "properties": {"repobilityId": "081cf4fabbe1d3a3", "scanner": "scanner-primary", "fingerprint": "236e89f46f448d9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-540950f353405780", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/dev/vitest.config.ts:15"}, "properties": {"repobilityId": "f5a7aa27f21384b6", "scanner": "scanner-primary", "fingerprint": "540950f353405780", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-160679ba80714bbf", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/dev/src/test-setup.ts:3"}, "properties": {"repobilityId": "a072b32841f3da59", "scanner": "scanner-primary", "fingerprint": "160679ba80714bbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d9edc038f844801", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/dev/src/stores/auth-store.ts:6"}, "properties": {"repobilityId": "adc4ff3e733f14c6", "scanner": "scanner-primary", "fingerprint": "4d9edc038f844801", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff6de034913a1b54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/pairing.ts:157"}, "properties": {"repobilityId": "8dba7c63591b2bdd", "scanner": "scanner-primary", "fingerprint": "ff6de034913a1b54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b28ba75b30ac71d2", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/dev/src/lib/sentry.ts:4"}, "properties": {"repobilityId": "94887ff88378d14e", "scanner": "scanner-primary", "fingerprint": "b28ba75b30ac71d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8c57a2d412f9dce", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/job-event-mapper.ts:3"}, "properties": {"repobilityId": "78f10674bbda839a", "scanner": "scanner-primary", "fingerprint": "c8c57a2d412f9dce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f106ebf859837c34", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/skill-sync.ts:134"}, "properties": {"repobilityId": "72e53b77fcce3a32", "scanner": "scanner-primary", "fingerprint": "f106ebf859837c34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c767399925f8da0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/jobs.ts:36"}, "properties": {"repobilityId": "776f23c575462a6f", "scanner": "scanner-primary", "fingerprint": "6c767399925f8da0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4481b13c133ab0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/lib/api/tasks.ts:20"}, "properties": {"repobilityId": "e544b7a6d110e94b", "scanner": "scanner-primary", "fingerprint": "d4481b13c133ab0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33afa472cf5688e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/misc.ts:105"}, "properties": {"repobilityId": "196a54e906410526", "scanner": "scanner-primary", "fingerprint": "33afa472cf5688e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b37dc7c7edd6ca9", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/dev/src/lib/api/client.ts:3"}, "properties": {"repobilityId": "fb0006d14ca6b880", "scanner": "scanner-primary", "fingerprint": "6b37dc7c7edd6ca9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dcc61b714c23a6e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/lib/api/client.ts:35"}, "properties": {"repobilityId": "c5d1ea6cd7157e8d", "scanner": "scanner-primary", "fingerprint": "5dcc61b714c23a6e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-18919440d66ee82d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/dev/src/pages/app/LoginPage.tsx:90"}, "properties": {"repobilityId": "3da33332fefdb515", "scanner": "scanner-primary", "fingerprint": "18919440d66ee82d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ef70f8d48b93182", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/pages/app/Settings.tsx:262"}, "properties": {"repobilityId": "1ab77008ff2415f0", "scanner": "scanner-primary", "fingerprint": "8ef70f8d48b93182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e340fc10811624cb", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/dev/src/pages/project/agent-chat/useAgentChatHandlers.ts:45"}, "properties": {"repobilityId": "4113e9afd23cc60e", "scanner": "scanner-primary", "fingerprint": "e340fc10811624cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2ee2ca157bd5b02", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/pages/project/project-settings/useProjectSettings.ts:183"}, "properties": {"repobilityId": "b36ec22b369d0d13", "scanner": "scanner-primary", "fingerprint": "b2ee2ca157bd5b02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04f89da6d3c718ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/dev/src/hooks/use-agent-commands.ts:136"}, "properties": {"repobilityId": "d79cd41a73e040ee", "scanner": "scanner-primary", "fingerprint": "04f89da6d3c718ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee48ee83d01a5828", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/dev/src/hooks/use-web-socket.ts:125"}, "properties": {"repobilityId": "34f9e3135a41d496", "scanner": "scanner-primary", "fingerprint": "ee48ee83d01a5828", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6828c53d471338bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/dev/src/features/pm/api.ts:21"}, "properties": {"repobilityId": "c235097162e77ef7", "scanner": "scanner-primary", "fingerprint": "6828c53d471338bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6d2387e99bea4c9", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/vitest.integration.config.ts:6"}, "properties": {"repobilityId": "0a21515268ce9a44", "scanner": "scanner-primary", "fingerprint": "a6d2387e99bea4c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ae958b7a3faf4e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/dispatch-tick-e2e.test.ts:171"}, "properties": {"repobilityId": "09021a6a0ee35e2d", "scanner": "scanner-primary", "fingerprint": "1ae958b7a3faf4e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07e64c7f62144dcd", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/per-state-override-e2e.test.ts:259"}, "properties": {"repobilityId": "af4afc44393f7aa7", "scanner": "scanner-primary", "fingerprint": "07e64c7f62144dcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7369075895a106a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/pipeline-e2e.test.ts:16"}, "properties": {"repobilityId": "c566a9e65044237c", "scanner": "scanner-primary", "fingerprint": "d7369075895a106a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b664c8dcc92754ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/tests/integration/org-tier.test.ts:14"}, "properties": {"repobilityId": "222fdc99cf2e26d5", "scanner": "scanner-primary", "fingerprint": "b664c8dcc92754ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-863618f54c7e071d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-per-project-config.test.ts:145"}, "properties": {"repobilityId": "1ca72ffdea7e3f4e", "scanner": "scanner-primary", "fingerprint": "863618f54c7e071d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02ad3a50c6b0d10a", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/memory-search.test.ts:15"}, "properties": {"repobilityId": "064dd3681f7eeac6", "scanner": "scanner-primary", "fingerprint": "02ad3a50c6b0d10a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c7ef7d92843a1f6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/idor-tenant-isolation.test.ts:17"}, "properties": {"repobilityId": "bd589930871acc7c", "scanner": "scanner-primary", "fingerprint": "1c7ef7d92843a1f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6fc447af6a41c93", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/builtin-seed.test.ts:136"}, "properties": {"repobilityId": "3f552ca5aec0aab8", "scanner": "scanner-primary", "fingerprint": "f6fc447af6a41c93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8da4ec30b5b3f39", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/decomposition-e2e.test.ts:163"}, "properties": {"repobilityId": "cf294b9cbf185714", "scanner": "scanner-primary", "fingerprint": "d8da4ec30b5b3f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e84f79f60790f400", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/issues-job-history-route.test.ts:84"}, "properties": {"repobilityId": "e87fcadc7d38e642", "scanner": "scanner-primary", "fingerprint": "e84f79f60790f400", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b530ee0ee0f156f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/smoke.test.ts:14"}, "properties": {"repobilityId": "2145409a95121874", "scanner": "scanner-primary", "fingerprint": "b530ee0ee0f156f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b692a0e0b24f21d", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/core/tests/integration/step-handoff-flow.test.ts:15"}, "properties": {"repobilityId": "f8759cac7c67241f", "scanner": "scanner-primary", "fingerprint": "3b692a0e0b24f21d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b2f827f4d1b617", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/budget-check-e2e.test.ts:158"}, "properties": {"repobilityId": "f4b4b84d17e4ab7b", "scanner": "scanner-primary", "fingerprint": "15b2f827f4d1b617", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de76d66a7e9a11a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/dispatcher-gates-e2e.test.ts:352"}, "properties": {"repobilityId": "e5f2b341c082e178", "scanner": "scanner-primary", "fingerprint": "de76d66a7e9a11a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6f0718a82f55a6f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/pipeline-health-e2e.test.ts:94"}, "properties": {"repobilityId": "d494db32ee6c1ed2", "scanner": "scanner-primary", "fingerprint": "f6f0718a82f55a6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-532ebe3e26e5335f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/memory-write-get-delete.test.ts:15"}, "properties": {"repobilityId": "bb7a0ef26a2df94f", "scanner": "scanner-primary", "fingerprint": "532ebe3e26e5335f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b48a59c23924db02", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/tests/integration/health-routes.test.ts:14"}, "properties": {"repobilityId": "7c1d070b2f4f3899", "scanner": "scanner-primary", "fingerprint": "b48a59c23924db02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e336ef9cf3fd6f9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/device-runner-e2e.test.ts:25"}, "properties": {"repobilityId": "06d537e6c160bf3c", "scanner": "scanner-primary", "fingerprint": "e336ef9cf3fd6f9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc6358bb49e7ecc5", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/tests/integration/memory-live.test.ts:22"}, "properties": {"repobilityId": "ba4586957c1e4f0c", "scanner": "scanner-primary", "fingerprint": "cc6358bb49e7ecc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c3d45c618a374ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/integration/session-group-resume-e2e.test.ts:407"}, "properties": {"repobilityId": "08ab8b1352834206", "scanner": "scanner-primary", "fingerprint": "8c3d45c618a374ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f154fa5487b6957b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/tests/helpers/truncate.ts:29"}, "properties": {"repobilityId": "0915ffed79cd2908", "scanner": "scanner-primary", "fingerprint": "f154fa5487b6957b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cb43f5ab18cae5f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/index.ts:270"}, "properties": {"repobilityId": "0abea4fc74987fd2", "scanner": "scanner-primary", "fingerprint": "6cb43f5ab18cae5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98383a07e826f77a", "level": "note", "message": {"text": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/rotation.test.ts:56"}, "properties": {"repobilityId": "05cdf3e1fd8d8d41", "scanner": "scanner-primary", "fingerprint": "98383a07e826f77a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-722157fcb963cfd5", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/integrations/store.ts:97"}, "properties": {"repobilityId": "63a338705026b941", "scanner": "scanner-primary", "fingerprint": "722157fcb963cfd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0846f467133a118", "level": "note", "message": {"text": "Legacy-named symbol `crmk_old` in packages/core/src/integrations/routes.test.ts:444"}, "properties": {"repobilityId": "6bec65c5f2427830", "scanner": "scanner-primary", "fingerprint": "e0846f467133a118", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df5fd272a78bae70", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/routes.ts:96"}, "properties": {"repobilityId": "066bf9615787f4fb", "scanner": "scanner-primary", "fingerprint": "df5fd272a78bae70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4285c204bad2fb4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/usage-registry.ts:6"}, "properties": {"repobilityId": "c32eceed92ca9d8c", "scanner": "scanner-primary", "fingerprint": "4285c204bad2fb4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81d67c3730195a4c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/integrations/epodsystem/adapter.ts:205"}, "properties": {"repobilityId": "aa2696a85866d192", "scanner": "scanner-primary", "fingerprint": "81d67c3730195a4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-820561ea24cd233e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/integrations/coolify/logs.test.ts:118"}, "properties": {"repobilityId": "b0fdba27d0df92b1", "scanner": "scanner-primary", "fingerprint": "820561ea24cd233e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f93f832a95e3fa1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/integrations/coolify/logs.ts:11"}, "properties": {"repobilityId": "7b6f2ea1337b9f4b", "scanner": "scanner-primary", "fingerprint": "7f93f832a95e3fa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fda513015d0b5d1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/usage-records/pricing.ts:1"}, "properties": {"repobilityId": "34bfbd04370e808b", "scanner": "scanner-primary", "fingerprint": "9fda513015d0b5d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-909a9c2aca6a776a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/prompt/system.ts:62"}, "properties": {"repobilityId": "094caa38e4be1a3b", "scanner": "scanner-primary", "fingerprint": "909a9c2aca6a776a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34c724e5cc1e543c", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/prompt/facts/registry.ts:5"}, "properties": {"repobilityId": "0823b44b1596da84", "scanner": "scanner-primary", "fingerprint": "34c724e5cc1e543c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8c50a7f1160bbe0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/prompt/facts/registry.ts:69"}, "properties": {"repobilityId": "e53c4074f2803597", "scanner": "scanner-primary", "fingerprint": "a8c50a7f1160bbe0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-366b06e3e4236e5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/prompt/facts/resolve.ts:1"}, "properties": {"repobilityId": "dd6d32d3626760af", "scanner": "scanner-primary", "fingerprint": "366b06e3e4236e5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f794fbe52aec1e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/install/fetch-release.ts:78"}, "properties": {"repobilityId": "1cd9c9247f8c6243", "scanner": "scanner-primary", "fingerprint": "2f794fbe52aec1e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62d1cea94d97e208", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/notifications/routes.ts:185"}, "properties": {"repobilityId": "6a91c14cd0e60d56", "scanner": "scanner-primary", "fingerprint": "62d1cea94d97e208", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb12c2dc62121583", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pm/routes.test.ts:112"}, "properties": {"repobilityId": "7d0f9839a7aa2c07", "scanner": "scanner-primary", "fingerprint": "bb12c2dc62121583", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79252e55e1499bf9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/config/env.ts:75"}, "properties": {"repobilityId": "e28bccd3f43dca25", "scanner": "scanner-primary", "fingerprint": "79252e55e1499bf9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-037127a8752de4d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/auth/email.ts:23"}, "properties": {"repobilityId": "1e8da13c56059a20", "scanner": "scanner-primary", "fingerprint": "037127a8752de4d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18b915cea30b67ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/auth/register.ts:40"}, "properties": {"repobilityId": "0b05d08094a05ca1", "scanner": "scanner-primary", "fingerprint": "18b915cea30b67ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a73b4a26d0ed6183", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/auth/logout.ts:14"}, "properties": {"repobilityId": "6e958021f624330d", "scanner": "scanner-primary", "fingerprint": "a73b4a26d0ed6183", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c0e0928709298ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/auth/desktop/pairing-routes.ts:347"}, "properties": {"repobilityId": "5bc2023fc49831f0", "scanner": "scanner-primary", "fingerprint": "7c0e0928709298ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acb8574daf7560cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/github.ts:52"}, "properties": {"repobilityId": "2d3b1730fc3b68cc", "scanner": "scanner-primary", "fingerprint": "acb8574daf7560cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ddc78ea399ff7fd8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/auth/oauth/handler.ts:251"}, "properties": {"repobilityId": "44352fca2773beb2", "scanner": "scanner-primary", "fingerprint": "ddc78ea399ff7fd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1020448e3d1bcc23", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/auth/oauth/oidc-discovery.ts:38"}, "properties": {"repobilityId": "7b45e7c6ee61bd6d", "scanner": "scanner-primary", "fingerprint": "1020448e3d1bcc23", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91c01f3fdeb2f1f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/middleware/error.ts:38"}, "properties": {"repobilityId": "999bda2c589f965a", "scanner": "scanner-primary", "fingerprint": "91c01f3fdeb2f1f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99f27c425a9419b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/projects/project-facts.ts:7"}, "properties": {"repobilityId": "cf75337367ed86be", "scanner": "scanner-primary", "fingerprint": "99f27c425a9419b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85ffeeb0e294b98e", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/projects/health-routes.test.ts:245"}, "properties": {"repobilityId": "8776b509ada82964", "scanner": "scanner-primary", "fingerprint": "85ffeeb0e294b98e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6bfad1e4dd8ab62", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/projects/routes.ts:176"}, "properties": {"repobilityId": "d8497adc191c585f", "scanner": "scanner-primary", "fingerprint": "d6bfad1e4dd8ab62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-622ad2ca2cd7ba4a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/projects/health-routes.ts:133"}, "properties": {"repobilityId": "b51455e6b582aff3", "scanner": "scanner-primary", "fingerprint": "622ad2ca2cd7ba4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6961a128c231b7be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/projects/health-routes.ts:234"}, "properties": {"repobilityId": "1402c5f6dc49327b", "scanner": "scanner-primary", "fingerprint": "6961a128c231b7be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b0bd89d7596a4b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/projects/state-context.ts:43"}, "properties": {"repobilityId": "626e198a65c155b8", "scanner": "scanner-primary", "fingerprint": "1b0bd89d7596a4b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb42208cd6b0016f", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/issues/decompose.ts:456"}, "properties": {"repobilityId": "cc3cfa898331ec3a", "scanner": "scanner-primary", "fingerprint": "eb42208cd6b0016f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc858173bc595681", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/issues/extras-routes-batch.test.ts:44"}, "properties": {"repobilityId": "326ca7f65cdf58d0", "scanner": "scanner-primary", "fingerprint": "bc858173bc595681", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b513300b9fa579ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.test.ts:47"}, "properties": {"repobilityId": "c6738c7f37239015", "scanner": "scanner-primary", "fingerprint": "b513300b9fa579ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bda112ef882af5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/issues/routes.ts:89"}, "properties": {"repobilityId": "47c6afc7c2f4d861", "scanner": "scanner-primary", "fingerprint": "1bda112ef882af5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d393be021b0db03", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/issues/extras-routes.ts:111"}, "properties": {"repobilityId": "5fc906accf907a6a", "scanner": "scanner-primary", "fingerprint": "5d393be021b0db03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27acc468ff7cc072", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/mcp/server.ts:35"}, "properties": {"repobilityId": "797ce59a2a1813e5", "scanner": "scanner-primary", "fingerprint": "27acc468ff7cc072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-065af5dfcfcdc850", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-projects.ts:204"}, "properties": {"repobilityId": "aa6f43d47ded61bd", "scanner": "scanner-primary", "fingerprint": "065af5dfcfcdc850", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f25532458c12d0f6", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core/src/mcp/tools/forge-jobs.ts:34"}, "properties": {"repobilityId": "502f95efa4ee563c", "scanner": "scanner-primary", "fingerprint": "f25532458c12d0f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d5a468e65b523ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-issues.ts:80"}, "properties": {"repobilityId": "b0b17103b501720a", "scanner": "scanner-primary", "fingerprint": "5d5a468e65b523ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-850037eb3d363d35", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-comments.ts:292"}, "properties": {"repobilityId": "6d3dc6850de93452", "scanner": "scanner-primary", "fingerprint": "850037eb3d363d35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41b6fd21f274cb5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/mcp/tools/forge-issues.test.ts:1060"}, "properties": {"repobilityId": "100f95ec56936164", "scanner": "scanner-primary", "fingerprint": "41b6fd21f274cb5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-422b5bc684631828", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core/src/mcp/tools/forge-project-pm.test.ts:215"}, "properties": {"repobilityId": "6e5f415d497725ed", "scanner": "scanner-primary", "fingerprint": "422b5bc684631828", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-293e91704aa6ad39", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.test.ts:192"}, "properties": {"repobilityId": "0bf8e5ea63c33a78", "scanner": "scanner-primary", "fingerprint": "293e91704aa6ad39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1b7db9a9435280a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.ts:58"}, "properties": {"repobilityId": "52cf19a86a4cc55f", "scanner": "scanner-primary", "fingerprint": "a1b7db9a9435280a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6cb2f1fa314fa19", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-ops-health.ts:111"}, "properties": {"repobilityId": "d860354509af9c9b", "scanner": "scanner-primary", "fingerprint": "f6cb2f1fa314fa19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bf624e48005f3fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-metrics.ts:58"}, "properties": {"repobilityId": "a61ca32bbb86a177", "scanner": "scanner-primary", "fingerprint": "2bf624e48005f3fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c53325d6c3297ab4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-pm-set-dependency.test.ts:34"}, "properties": {"repobilityId": "59d2284babaaf748", "scanner": "scanner-primary", "fingerprint": "c53325d6c3297ab4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e382730aff17ac23", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/mcp/tools/forge-projects.test.ts:763"}, "properties": {"repobilityId": "8bd89fd18b7be1fe", "scanner": "scanner-primary", "fingerprint": "e382730aff17ac23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb59ff095e93b105", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/chat/routes.test.ts:36"}, "properties": {"repobilityId": "d6b8bf99eed14301", "scanner": "scanner-primary", "fingerprint": "fb59ff095e93b105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-268be99b4994fb50", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core/src/ws/broadcast-subscribers.ts:104"}, "properties": {"repobilityId": "b5f5f5f752d6ca79", "scanner": "scanner-primary", "fingerprint": "268be99b4994fb50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d93f64f19aac3d66", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/ws/server.ts:132"}, "properties": {"repobilityId": "ed6ae41e9eeb8615", "scanner": "scanner-primary", "fingerprint": "d93f64f19aac3d66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f4e084d51bfcff1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/observability/sentry.ts:5"}, "properties": {"repobilityId": "ae0cb7bc88665b35", "scanner": "scanner-primary", "fingerprint": "6f4e084d51bfcff1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-490a798b1547990a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/lib/feature-flags.ts:22"}, "properties": {"repobilityId": "db78f91ac622e4e6", "scanner": "scanner-primary", "fingerprint": "490a798b1547990a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28fb9d8afa530bd4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/knowledge-edges/routes.ts:89"}, "properties": {"repobilityId": "57de0b788c4a17be", "scanner": "scanner-primary", "fingerprint": "28fb9d8afa530bd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4476bedbea148f03", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/domain-templates/apply.ts:57"}, "properties": {"repobilityId": "542d529575ef39ba", "scanner": "scanner-primary", "fingerprint": "4476bedbea148f03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-677e45bc4ce2b9ec", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/broadcast.ts:47"}, "properties": {"repobilityId": "9859ae702f66cfa7", "scanner": "scanner-primary", "fingerprint": "677e45bc4ce2b9ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-089b4f60c72bfaed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/agent-sessions/lifecycle-routes.test.ts:146"}, "properties": {"repobilityId": "079f917c230a6691", "scanner": "scanner-primary", "fingerprint": "089b4f60c72bfaed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03755c56999bc7d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/agent-sessions/routes.test.ts:18"}, "properties": {"repobilityId": "dfc665e813f1a691", "scanner": "scanner-primary", "fingerprint": "03755c56999bc7d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c0216a3c5819376", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/pipeline-control-types.ts:33"}, "properties": {"repobilityId": "1063d8ceebccf61e", "scanner": "scanner-primary", "fingerprint": "4c0216a3c5819376", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17daa78283d536a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/agent-sessions/chat-turn.ts:24"}, "properties": {"repobilityId": "0c4b1006b059c918", "scanner": "scanner-primary", "fingerprint": "17daa78283d536a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-047defcce7322426", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/agent-sessions/routes.ts:185"}, "properties": {"repobilityId": "6862ae1764c39967", "scanner": "scanner-primary", "fingerprint": "047defcce7322426", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09069c4d4e776608", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/agent-sessions/chat-turn.test.ts:3"}, "properties": {"repobilityId": "213c4c8d44dfc336", "scanner": "scanner-primary", "fingerprint": "09069c4d4e776608", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e5b7b54453d23d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/admin/routes.ts:192"}, "properties": {"repobilityId": "cf984f28702f82ac", "scanner": "scanner-primary", "fingerprint": "0e5b7b54453d23d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b12d02182ba441d8", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/memory/indexer.ts:330"}, "properties": {"repobilityId": "9fae8ba2d4aa6ecd", "scanner": "scanner-primary", "fingerprint": "b12d02182ba441d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d9eb9b3cfba9bc1", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/ci-fix-pattern-learn.test.ts:120"}, "properties": {"repobilityId": "e4895ceeda080fba", "scanner": "scanner-primary", "fingerprint": "4d9eb9b3cfba9bc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d16222587330042", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.test.ts:27"}, "properties": {"repobilityId": "6e12f6831fa47e8e", "scanner": "scanner-primary", "fingerprint": "5d16222587330042", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fea4e11ec725be7f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/registry.ts:15"}, "properties": {"repobilityId": "0a658fb68a231dc2", "scanner": "scanner-primary", "fingerprint": "fea4e11ec725be7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ac2bbebb6103a41", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/pipeline-config-service.test.ts:3"}, "properties": {"repobilityId": "3621ed5ededd9cbe", "scanner": "scanner-primary", "fingerprint": "0ac2bbebb6103a41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-167bd660c34408a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/release-coolify.ts:62"}, "properties": {"repobilityId": "25f2c8cb6d8895ed", "scanner": "scanner-primary", "fingerprint": "167bd660c34408a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a02e56cd4eb420d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/pipeline-config-schema.ts:201"}, "properties": {"repobilityId": "6ad989f5406e7176", "scanner": "scanner-primary", "fingerprint": "1a02e56cd4eb420d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e5900bdce148d5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/mcp-catalog.test.ts:76"}, "properties": {"repobilityId": "5d694a7850949aa6", "scanner": "scanner-primary", "fingerprint": "4e5900bdce148d5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c53dd24eab2bf10", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/core/src/pipeline/state-machine.test.ts:262"}, "properties": {"repobilityId": "81d5ef6238348945", "scanner": "scanner-primary", "fingerprint": "8c53dd24eab2bf10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8681558fadb9d2e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/hooks.ts:115"}, "properties": {"repobilityId": "818148bb838a38f0", "scanner": "scanner-primary", "fingerprint": "8681558fadb9d2e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-012d8fcbf384266c", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/runs-read-routes.test.ts:20"}, "properties": {"repobilityId": "89e0e6cd5b32dae7", "scanner": "scanner-primary", "fingerprint": "012d8fcbf384266c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1129dc14917f5aa2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/decomposition-subscribers.test.ts:199"}, "properties": {"repobilityId": "0c4136f85116af8d", "scanner": "scanner-primary", "fingerprint": "1129dc14917f5aa2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de1e3d50deb3673b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/orchestrator.ts:166"}, "properties": {"repobilityId": "84ae160ba36bb368", "scanner": "scanner-primary", "fingerprint": "de1e3d50deb3673b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8054cebe4de67c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/sweeper.ts:109"}, "properties": {"repobilityId": "a23c692e6ea7128e", "scanner": "scanner-primary", "fingerprint": "e8054cebe4de67c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd0fd4cf7e8603e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.ts:287"}, "properties": {"repobilityId": "95179f506cfecf58", "scanner": "scanner-primary", "fingerprint": "dd0fd4cf7e8603e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2da31bceab94038d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/missing-skill-backfill.test.ts:3"}, "properties": {"repobilityId": "7259e6ce1040094e", "scanner": "scanner-primary", "fingerprint": "2da31bceab94038d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0cf0143b63fceb33", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/failure-classifier.ts:113"}, "properties": {"repobilityId": "025c29836d7083ee", "scanner": "scanner-primary", "fingerprint": "0cf0143b63fceb33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d46e7a23d26f5fc", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/pipeline/runs-cascade.ts:94"}, "properties": {"repobilityId": "a8511fb45764afa1", "scanner": "scanner-primary", "fingerprint": "4d46e7a23d26f5fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75f8973655c85327", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/state-machine.ts:92"}, "properties": {"repobilityId": "439e3cdb9c77f468", "scanner": "scanner-primary", "fingerprint": "75f8973655c85327", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d049fbcee1454792", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core/src/pipeline/pipeline-config-service.ts:134"}, "properties": {"repobilityId": "f910a48b04cac6e5", "scanner": "scanner-primary", "fingerprint": "d049fbcee1454792", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dee1418f5106bd0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/pipeline/outbox-worker.test.ts:18"}, "properties": {"repobilityId": "bfbae8352bfa4267", "scanner": "scanner-primary", "fingerprint": "9dee1418f5106bd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9037c5b1e9617ce0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/registry.test.ts:179"}, "properties": {"repobilityId": "f2de40d169724daa", "scanner": "scanner-primary", "fingerprint": "9037c5b1e9617ce0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b13a1cfb667c4a65", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/pipeline/analytics-routes.test.ts:96"}, "properties": {"repobilityId": "2597db4e72845196", "scanner": "scanner-primary", "fingerprint": "b13a1cfb667c4a65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47f37cb5eabe5820", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/pipeline/runs.test.ts:153"}, "properties": {"repobilityId": "fcf18f92914e48f7", "scanner": "scanner-primary", "fingerprint": "47f37cb5eabe5820", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58f70ddc5aeb492e", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/db/schema.ts:107"}, "properties": {"repobilityId": "3223af898afe9d44", "scanner": "scanner-primary", "fingerprint": "58f70ddc5aeb492e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98fc8b6d779cace4", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/metrics/queries.ts:305"}, "properties": {"repobilityId": "ca733a8902c2a3d9", "scanner": "scanner-primary", "fingerprint": "98fc8b6d779cace4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93ce2958d157e0c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/schedules/routes.tick.test.ts:9"}, "properties": {"repobilityId": "7e228288d0b227e1", "scanner": "scanner-primary", "fingerprint": "93ce2958d157e0c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19007296345ad6e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/schedules/routes.ts:29"}, "properties": {"repobilityId": "40a0542c8e88d4d0", "scanner": "scanner-primary", "fingerprint": "19007296345ad6e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cad49607a7b6cb23", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/schedules/dispatch.ts:36"}, "properties": {"repobilityId": "84604ad2f3c9daa0", "scanner": "scanner-primary", "fingerprint": "cad49607a7b6cb23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da291b3c14a07e43", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/core/src/skills/studio-routes.ts:39"}, "properties": {"repobilityId": "4801dcba966c618e", "scanner": "scanner-primary", "fingerprint": "da291b3c14a07e43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1fdd0b6b93f5fb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/skills/builtin-seed.ts:205"}, "properties": {"repobilityId": "c4473263b328ab87", "scanner": "scanner-primary", "fingerprint": "e1fdd0b6b93f5fb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-214665f93b56c4a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/skills/routes.ts:91"}, "properties": {"repobilityId": "66a493213e7fab3a", "scanner": "scanner-primary", "fingerprint": "214665f93b56c4a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cf48ae1b9de1851", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/skills/effective.ts:303"}, "properties": {"repobilityId": "a4d0c9261dc1d392", "scanner": "scanner-primary", "fingerprint": "7cf48ae1b9de1851", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18c7e1b2ba129081", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/runners/stale-detector.ts:15"}, "properties": {"repobilityId": "2fb865431223f70f", "scanner": "scanner-primary", "fingerprint": "18c7e1b2ba129081", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3fbf46f0e94d21e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/runners/select.ts:197"}, "properties": {"repobilityId": "89c37607c8bfca46", "scanner": "scanner-primary", "fingerprint": "f3fbf46f0e94d21e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1570e4cfc67f3153", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/runners/routes.ts:377"}, "properties": {"repobilityId": "ff135a2b1e3ec690", "scanner": "scanner-primary", "fingerprint": "1570e4cfc67f3153", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d62a3bec04e9d16f", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.test.ts:241"}, "properties": {"repobilityId": "a6cbfd4a8dd08c77", "scanner": "scanner-primary", "fingerprint": "d62a3bec04e9d16f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccc9b2b2a2a002b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/agent-session-link.ts:137"}, "properties": {"repobilityId": "e6bed0c9d938a5f7", "scanner": "scanner-primary", "fingerprint": "ccc9b2b2a2a002b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c261e8abdca91d18", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/core/src/jobs/finalize-failure.ts:177"}, "properties": {"repobilityId": "b43d4187e460bced", "scanner": "scanner-primary", "fingerprint": "c261e8abdca91d18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21a85a7a1d62d80f", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/core/src/jobs/dispatch-gates.ts:286"}, "properties": {"repobilityId": "93be36226a2bbbf0", "scanner": "scanner-primary", "fingerprint": "21a85a7a1d62d80f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-687b295c27404346", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/events-routes.test.ts:125"}, "properties": {"repobilityId": "404ff305a0a3e867", "scanner": "scanner-primary", "fingerprint": "687b295c27404346", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97d94f3061d21586", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/retry.ts:268"}, "properties": {"repobilityId": "0dfcd0aef7cdd229", "scanner": "scanner-primary", "fingerprint": "97d94f3061d21586", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-789915654de5b017", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/jobs/lifecycle-routes.test.ts:161"}, "properties": {"repobilityId": "690ca517aa3e2bbb", "scanner": "scanner-primary", "fingerprint": "789915654de5b017", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63e8a05d2b71ae44", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/jobs/session-resume.test.ts:79"}, "properties": {"repobilityId": "dfbc0128a2de6c2f", "scanner": "scanner-primary", "fingerprint": "63e8a05d2b71ae44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53fecb37563f26cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.test.ts:4"}, "properties": {"repobilityId": "d6c324810fa38f17", "scanner": "scanner-primary", "fingerprint": "53fecb37563f26cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35cbd1a5d02e1e33", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/jobs/dispatch-tick.ts:100"}, "properties": {"repobilityId": "61390e7cc8441fc9", "scanner": "scanner-primary", "fingerprint": "35cbd1a5d02e1e33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c313971ff267cf3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/lifecycle-routes.ts:62"}, "properties": {"repobilityId": "5bc72f622baa9571", "scanner": "scanner-primary", "fingerprint": "c313971ff267cf3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76161f3d08de2f95", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/events-routes.ts:178"}, "properties": {"repobilityId": "741af91d3def7a3c", "scanner": "scanner-primary", "fingerprint": "76161f3d08de2f95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45f7244904c9ade2", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatch-tick.test.ts:47"}, "properties": {"repobilityId": "6cdcbdfff81dcc65", "scanner": "scanner-primary", "fingerprint": "45f7244904c9ade2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f93bba4c420eabc0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/dispatcher.ts:74"}, "properties": {"repobilityId": "99d82421171d40d0", "scanner": "scanner-primary", "fingerprint": "f93bba4c420eabc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-462f068c8aac58dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/jobs/enqueue.ts:46"}, "properties": {"repobilityId": "244e5772058a1097", "scanner": "scanner-primary", "fingerprint": "462f068c8aac58dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b152b7dd96b5b09", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/core/src/jobs/loop-monitor.ts:62"}, "properties": {"repobilityId": "eb51878ca393edc9", "scanner": "scanner-primary", "fingerprint": "3b152b7dd96b5b09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ab6fb98d77d53a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/outbound.ts:58"}, "properties": {"repobilityId": "e71e86be3a461e32", "scanner": "scanner-primary", "fingerprint": "1ab6fb98d77d53a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22d5f583e67683d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/webhooks/inbound-routes.test.ts:49"}, "properties": {"repobilityId": "a61ad5e3b91e376d", "scanner": "scanner-primary", "fingerprint": "22d5f583e67683d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-75145f78fd93ac3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/devices/skills-routes.ts:19"}, "properties": {"repobilityId": "700b885654e442ff", "scanner": "scanner-primary", "fingerprint": "75145f78fd93ac3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-355e541ad2063cc6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/devices/routes.test.ts:158"}, "properties": {"repobilityId": "390e941768eafea4", "scanner": "scanner-primary", "fingerprint": "355e541ad2063cc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d8834116f3abee35", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/core/src/devices/routes.ts:113"}, "properties": {"repobilityId": "527447e3d14eb489", "scanner": "scanner-primary", "fingerprint": "d8834116f3abee35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd86cc202495ff53", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/comments/tree.ts:28"}, "properties": {"repobilityId": "92d585a1efd2e5fb", "scanner": "scanner-primary", "fingerprint": "dd86cc202495ff53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d543070d7a775a06", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/core/src/comments/tree.ts:31"}, "properties": {"repobilityId": "59b2bee73335951c", "scanner": "scanner-primary", "fingerprint": "d543070d7a775a06", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-197b5c8eb15a5ab3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/core/src/comments/routes.ts:126"}, "properties": {"repobilityId": "32cf7a6496ee6340", "scanner": "scanner-primary", "fingerprint": "197b5c8eb15a5ab3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e8cdaf038339b5a", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/contracts/src/issues.ts:1"}, "properties": {"repobilityId": "794e1d9d0ff9279f", "scanner": "scanner-primary", "fingerprint": "4e8cdaf038339b5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d6fe82d01f06210", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/contracts/src/skill-facts.ts:1"}, "properties": {"repobilityId": "15b4e2219efd453c", "scanner": "scanner-primary", "fingerprint": "4d6fe82d01f06210", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f568ca26092bafe1", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/contracts/src/integrations.ts:3"}, "properties": {"repobilityId": "e5252bf70f1c7842", "scanner": "scanner-primary", "fingerprint": "f568ca26092bafe1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11fc253b11bdc89b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/contracts/src/responses.ts:22"}, "properties": {"repobilityId": "dc0206719f116252", "scanner": "scanner-primary", "fingerprint": "11fc253b11bdc89b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8398c811d73074d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/contracts/src/pipeline-registry.ts:5"}, "properties": {"repobilityId": "a82eb98b01e2ef2d", "scanner": "scanner-primary", "fingerprint": "8398c811d73074d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59b992d62d86a65a", "level": "note", "message": {"text": "25 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "58b9516d72ffa8ba", "scanner": "scanner-primary", "fingerprint": "59b992d62d86a65a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-0cf07f683245df28", "level": "warning", "message": {"text": "Frontend route `/preview` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "properties": {"repobilityId": "9fd0b0cf6585bb95", "scanner": "scanner-primary", "fingerprint": "0cf07f683245df28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-80334de2180e8bf3", "level": "warning", "message": {"text": "Frontend route `/project/:slug` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "properties": {"repobilityId": "0867ce43779ac90a", "scanner": "scanner-primary", "fingerprint": "80334de2180e8bf3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-749a4789639ad68b", "level": "warning", "message": {"text": "Frontend route `issues/new` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "properties": {"repobilityId": "8bfafa3250776a33", "scanner": "scanner-primary", "fingerprint": "749a4789639ad68b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9fc6c07b2a0e3b0d", "level": "warning", "message": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 packages/dev/src/App.tsx"}, "properties": {"repobilityId": "d15b5868c4c4709f", "scanner": "scanner-primary", "fingerprint": "9fc6c07b2a0e3b0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6bfaf779aa005f42", "level": "error", "message": {"text": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:46)"}, "properties": {"repobilityId": "aeecc2fa36043084", "scanner": "scanner-primary", "fingerprint": "6bfaf779aa005f42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-41556c6cf96391ae", "level": "error", "message": {"text": "Dangling fetch: GET /anything (packages/tests/dev/lib/api-client-state-machine.test.ts:52)"}, "properties": {"repobilityId": "5ef8ea17cb5fd5d0", "scanner": "scanner-primary", "fingerprint": "41556c6cf96391ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ba5bf87018adb26d", "level": "error", "message": {"text": "Dangling fetch: GET /ping (packages/tests/dev/lib/api-client-state-machine.test.ts:58)"}, "properties": {"repobilityId": "969fc2eb5fba4ef2", "scanner": "scanner-primary", "fingerprint": "ba5bf87018adb26d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f2db4073a3392db", "level": "error", "message": {"text": "Dangling fetch: GET /a (packages/tests/dev/lib/api-client-state-machine.test.ts:74)"}, "properties": {"repobilityId": "dbbb0ab26445c8d3", "scanner": "scanner-primary", "fingerprint": "7f2db4073a3392db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d2d1757cb7ce0302", "level": "error", "message": {"text": "Dangling fetch: GET /b (packages/tests/dev/lib/api-client-state-machine.test.ts:81)"}, "properties": {"repobilityId": "11137fb58bd1f003", "scanner": "scanner-primary", "fingerprint": "d2d1757cb7ce0302", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0a417288c4f56ad0", "level": "error", "message": {"text": "Dangling fetch: GET /projects/${projectId}/skills/effective (packages/dev/src/lib/skill-sync.ts:50)"}, "properties": {"repobilityId": "6eb405b690cf8136", "scanner": "scanner-primary", "fingerprint": "0a417288c4f56ad0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a5ac129cd998da6", "level": "error", "message": {"text": "Dangling fetch: POST /issues/${documentId}/enrich (packages/dev/src/lib/api/issues.ts:128)"}, "properties": {"repobilityId": "19816aceb4ebf08d", "scanner": "scanner-primary", "fingerprint": "5a5ac129cd998da6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-92d4550cb660ee9b", "level": "error", "message": {"text": "Dangling fetch: GET /issues/${documentId}/cost-summary (packages/dev/src/lib/api/issues.ts:147)"}, "properties": {"repobilityId": "7967c40868dc82fe", "scanner": "scanner-primary", "fingerprint": "92d4550cb660ee9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1cbb4858c6d6dd82", "level": "error", "message": {"text": "Dangling fetch: POST /agent-sessions/start (packages/dev/src/lib/api/agent-sessions.ts:45)"}, "properties": {"repobilityId": "980173e2844ffd2a", "scanner": "scanner-primary", "fingerprint": "1cbb4858c6d6dd82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2e3fd7702a9ff1db", "level": "error", "message": {"text": "Dangling fetch: POST /agent-sessions/send (packages/dev/src/lib/api/agent-sessions.ts:56)"}, "properties": {"repobilityId": "2637463fc19d9a2a", "scanner": "scanner-primary", "fingerprint": "2e3fd7702a9ff1db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-85da46b21b3e802a", "level": "error", "message": {"text": "Dangling fetch: PATCH /agent-sessions/${sessionId} (packages/dev/src/lib/api/agent-sessions.ts:83)"}, "properties": {"repobilityId": "65e6c4570870997e", "scanner": "scanner-primary", "fingerprint": "85da46b21b3e802a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-62522492e711811b", "level": "error", "message": {"text": "Dangling fetch: POST /agent-sessions/${sessionId}/relay (packages/dev/src/lib/api/agent-sessions.ts:94)"}, "properties": {"repobilityId": "470c1de4c1a415b7", "scanner": "scanner-primary", "fingerprint": "62522492e711811b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e142d10fe83c5e68", "level": "error", "message": {"text": "Dangling fetch: POST /agent-sessions/prompt-built (packages/dev/src/lib/api/agent-sessions.ts:105)"}, "properties": {"repobilityId": "6a241a134b5da71d", "scanner": "scanner-primary", "fingerprint": "e142d10fe83c5e68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e113ecd907c939bd", "level": "error", "message": {"text": "Dangling fetch: GET /issues/${issueId}/tasks (packages/dev/src/lib/api/tasks.ts:26)"}, "properties": {"repobilityId": "09012c00225db60f", "scanner": "scanner-primary", "fingerprint": "e113ecd907c939bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bdfd20b28ca1f046", "level": "error", "message": {"text": "Dangling fetch: PATCH /tasks/${taskId} (packages/dev/src/lib/api/tasks.ts:34)"}, "properties": {"repobilityId": "3571ff43d90615ca", "scanner": "scanner-primary", "fingerprint": "bdfd20b28ca1f046", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4f0ea6b23c8d4685", "level": "error", "message": {"text": "Dangling fetch: GET /notifications (packages/dev/src/lib/api/misc.ts:57)"}, "properties": {"repobilityId": "ef65843c3de398a1", "scanner": "scanner-primary", "fingerprint": "4f0ea6b23c8d4685", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bfe24bbee1275194", "level": "error", "message": {"text": "Dangling fetch: GET /notifications/unread-count (packages/dev/src/lib/api/misc.ts:61)"}, "properties": {"repobilityId": "e92fd9fd43b7c719", "scanner": "scanner-primary", "fingerprint": "bfe24bbee1275194", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-832eae563901f2c9", "level": "error", "message": {"text": "Dangling fetch: PATCH /notifications/${id} (packages/dev/src/lib/api/misc.ts:66)"}, "properties": {"repobilityId": "c4d72829ce1f8e9a", "scanner": "scanner-primary", "fingerprint": "832eae563901f2c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-15816dab8bf2ae2a", "level": "error", "message": {"text": "Dangling fetch: POST /notifications/mark-all-read (packages/dev/src/lib/api/misc.ts:73)"}, "properties": {"repobilityId": "c852144fd242b16b", "scanner": "scanner-primary", "fingerprint": "15816dab8bf2ae2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3f60c8915cc651e9", "level": "error", "message": {"text": "Dangling fetch: DELETE /comments/${documentId} (packages/dev/src/lib/api/comments.ts:42)"}, "properties": {"repobilityId": "205b357b22130f2b", "scanner": "scanner-primary", "fingerprint": "3f60c8915cc651e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-78b1b865435c35db", "level": "error", "message": {"text": "Dangling fetch: GET /usage-records/summary?projectId=${projectId}&days=${days} (packages/dev/src/lib/api/usage.ts:5)"}, "properties": {"repobilityId": "75d4d64c01d9f7b9", "scanner": "scanner-primary", "fingerprint": "78b1b865435c35db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0093ff985d9658f1", "level": "error", "message": {"text": "Dangling fetch: POST /usage-records (packages/dev/src/lib/api/usage.ts:9)"}, "properties": {"repobilityId": "b304968bb331671b", "scanner": "scanner-primary", "fingerprint": "0093ff985d9658f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d6d2b12a893ce6c8", "level": "error", "message": {"text": "Dangling fetch: POST /usage-records/ingest-cli (packages/dev/src/lib/api/usage.ts:16)"}, "properties": {"repobilityId": "a07916585ea722fe", "scanner": "scanner-primary", "fingerprint": "d6d2b12a893ce6c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb3f3bc5050f7e73", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/per-state-override-e2e.test.ts:138)"}, "properties": {"repobilityId": "8c43d9a58f5e4b1f", "scanner": "scanner-primary", "fingerprint": "bb3f3bc5050f7e73", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dabcc4715a3aa3fc", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:246)"}, "properties": {"repobilityId": "ac62f0871925af92", "scanner": "scanner-primary", "fingerprint": "dabcc4715a3aa3fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f3361fcc22a96342", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/per-state-override-e2e.test.ts:336)"}, "properties": {"repobilityId": "0cafced491f4b495", "scanner": "scanner-primary", "fingerprint": "f3361fcc22a96342", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9aa267455901775b", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:114)"}, "properties": {"repobilityId": "fb92d56b565bc081", "scanner": "scanner-primary", "fingerprint": "9aa267455901775b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b1da33dd03b358a1", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:130)"}, "properties": {"repobilityId": "7ab6f3366db593cc", "scanner": "scanner-primary", "fingerprint": "b1da33dd03b358a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-feed301064951ee2", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:143)"}, "properties": {"repobilityId": "109d1f42ad02f542", "scanner": "scanner-primary", "fingerprint": "feed301064951ee2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3756203cadcc0d6b", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:180)"}, "properties": {"repobilityId": "a20c17d981e5e3a1", "scanner": "scanner-primary", "fingerprint": "3756203cadcc0d6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-befef2859154e3d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:221)"}, "properties": {"repobilityId": "00260df289b1fbb1", "scanner": "scanner-primary", "fingerprint": "befef2859154e3d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a8ce287179d75dfb", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:253)"}, "properties": {"repobilityId": "f88e6ed789399d68", "scanner": "scanner-primary", "fingerprint": "a8ce287179d75dfb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8f034c7ffc39b2ad", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-search.test.ts:279)"}, "properties": {"repobilityId": "c11af5d02642b0d5", "scanner": "scanner-primary", "fingerprint": "8f034c7ffc39b2ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ad37671a91e6e587", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:125)"}, "properties": {"repobilityId": "55658d80c83c341d", "scanner": "scanner-primary", "fingerprint": "ad37671a91e6e587", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8fcd73da1a2e5e8", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:149)"}, "properties": {"repobilityId": "8dec1d040033fe4b", "scanner": "scanner-primary", "fingerprint": "f8fcd73da1a2e5e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ec3732cc94e96670", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:157)"}, "properties": {"repobilityId": "a717fe2478b99b12", "scanner": "scanner-primary", "fingerprint": "ec3732cc94e96670", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-96253f46e7893780", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:172)"}, "properties": {"repobilityId": "318427b00b365b03", "scanner": "scanner-primary", "fingerprint": "96253f46e7893780", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75fd403c5a00eef2", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:189)"}, "properties": {"repobilityId": "92b7c80eb6535911", "scanner": "scanner-primary", "fingerprint": "75fd403c5a00eef2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f1190eb68215b61", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:197)"}, "properties": {"repobilityId": "db36e090f1d2824d", "scanner": "scanner-primary", "fingerprint": "5f1190eb68215b61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0478035d53379972", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:215)"}, "properties": {"repobilityId": "62cceb434c02fdeb", "scanner": "scanner-primary", "fingerprint": "0478035d53379972", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90f0508636159a49", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:221)"}, "properties": {"repobilityId": "af8c1cbbc85cc784", "scanner": "scanner-primary", "fingerprint": "90f0508636159a49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8e6e71066405d4d8", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:228)"}, "properties": {"repobilityId": "1cf4fe64b73cca03", "scanner": "scanner-primary", "fingerprint": "8e6e71066405d4d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e7e6ece187251a04", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${issB}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:250)"}, "properties": {"repobilityId": "e0f5733ad9aae3c0", "scanner": "scanner-primary", "fingerprint": "e7e6ece187251a04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4b40846f246afa14", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:269)"}, "properties": {"repobilityId": "8bb86a4c2b46da27", "scanner": "scanner-primary", "fingerprint": "4b40846f246afa14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90005ab509cbee8c", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:283)"}, "properties": {"repobilityId": "c5b2eabf5beb1829", "scanner": "scanner-primary", "fingerprint": "90005ab509cbee8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e6d0720b0ff210a9", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${a}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:289)"}, "properties": {"repobilityId": "99ce007b90a61712", "scanner": "scanner-primary", "fingerprint": "e6d0720b0ff210a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cae3befe491af743", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:309)"}, "properties": {"repobilityId": "50ac87bd5ccb42d4", "scanner": "scanner-primary", "fingerprint": "cae3befe491af743", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-25e87066f0769563", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${c}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:315)"}, "properties": {"repobilityId": "97eb60b3e2dd9f5a", "scanner": "scanner-primary", "fingerprint": "25e87066f0769563", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dfc0c6c9c14ccca0", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:321)"}, "properties": {"repobilityId": "7c80ef66eb6ab73d", "scanner": "scanner-primary", "fingerprint": "dfc0c6c9c14ccca0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7675b70d97136050", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${randomUUID()}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:341)"}, "properties": {"repobilityId": "c3fca68ffeeb7a0c", "scanner": "scanner-primary", "fingerprint": "7675b70d97136050", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b77fc003b5043df0", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:358)"}, "properties": {"repobilityId": "5af0e179ab65b56d", "scanner": "scanner-primary", "fingerprint": "b77fc003b5043df0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-71236dcd1d585c6b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/issues/${b}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.test.ts:365)"}, "properties": {"repobilityId": "dd01a9441f4d2533", "scanner": "scanner-primary", "fingerprint": "71236dcd1d585c6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ca948f5277f2c2d6", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${b}/dependencies (packages/core/tests/integration/dependency-routes-e2e.test.ts:384)"}, "properties": {"repobilityId": "bee61b5767d9590b", "scanner": "scanner-primary", "fingerprint": "ca948f5277f2c2d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-769f263e6d9847ae", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/issues/${c}/dependencies/${edgeId} (packages/core/tests/integration/dependency-routes-e2e.test.ts:391)"}, "properties": {"repobilityId": "b72434fb926445e2", "scanner": "scanner-primary", "fingerprint": "769f263e6d9847ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-63be318a441dc555", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/issues/${a}/dependencies/${randomUUID()} (packages/core/tests/integration/dependency-routes-e2e.test.ts:404)"}, "properties": {"repobilityId": "7c2e00edd2c9437d", "scanner": "scanner-primary", "fingerprint": "63be318a441dc555", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e20467a6bbfc34d4", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=${step} (packages/core/tests/integration/issues-job-history-route.test.ts:142)"}, "properties": {"repobilityId": "b297a93cf9427bd8", "scanner": "scanner-primary", "fingerprint": "e20467a6bbfc34d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a5b6af0fd574e297", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${issueId}/job-history?step=bogus (packages/core/tests/integration/issues-job-history-route.test.ts:272)"}, "properties": {"repobilityId": "c9dd34b2a98ee274", "scanner": "scanner-primary", "fingerprint": "a5b6af0fd574e297", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-07ebe95470c1cc5f", "level": "error", "message": {"text": "Dangling fetch: POST /api/issue-step-contexts (packages/core/tests/integration/step-handoff-flow.test.ts:188)"}, "properties": {"repobilityId": "bef8eccc91b5d7c2", "scanner": "scanner-primary", "fingerprint": "07ebe95470c1cc5f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-20cfc8490c5f2933", "level": "error", "message": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:210)"}, "properties": {"repobilityId": "ee3d98e161e1fa6d", "scanner": "scanner-primary", "fingerprint": "20cfc8490c5f2933", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7a96f5137dd6ff61", "level": "error", "message": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:240)"}, "properties": {"repobilityId": "d3d42224cea5e050", "scanner": "scanner-primary", "fingerprint": "7a96f5137dd6ff61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c761f420efdfb5df", "level": "error", "message": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:267)"}, "properties": {"repobilityId": "766b6aa51c5b213e", "scanner": "scanner-primary", "fingerprint": "c761f420efdfb5df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a3ccbb6b74d65ead", "level": "error", "message": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:296)"}, "properties": {"repobilityId": "d091780c3794113b", "scanner": "scanner-primary", "fingerprint": "a3ccbb6b74d65ead", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f5b8d511e523e5a", "level": "error", "message": {"text": "Dangling fetch: POST /api/jobs/${jobId}/complete (packages/core/tests/integration/step-handoff-flow.test.ts:336)"}, "properties": {"repobilityId": "03a57a093f4bb0fb", "scanner": "scanner-primary", "fingerprint": "5f5b8d511e523e5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-20ce94bcb6171b3a", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${issueId}/comments (packages/core/tests/integration/comment-mentions.test.ts:109)"}, "properties": {"repobilityId": "ded987e479994402", "scanner": "scanner-primary", "fingerprint": "20ce94bcb6171b3a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0bfb9b77e824279c", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:131)"}, "properties": {"repobilityId": "8c51b3a3aa96991e", "scanner": "scanner-primary", "fingerprint": "0bfb9b77e824279c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-116f60391db57afe", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:152)"}, "properties": {"repobilityId": "da67528c04c7a97d", "scanner": "scanner-primary", "fingerprint": "116f60391db57afe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ad13ea9d013147d4", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:170)"}, "properties": {"repobilityId": "d781b212a153b783", "scanner": "scanner-primary", "fingerprint": "ad13ea9d013147d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-749ab2f1221b83e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:185)"}, "properties": {"repobilityId": "929c6a1b58c2859a", "scanner": "scanner-primary", "fingerprint": "749ab2f1221b83e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f65354531b137a68", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:201)"}, "properties": {"repobilityId": "db95fb62abf5bf13", "scanner": "scanner-primary", "fingerprint": "f65354531b137a68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e7db5556ce5ae56", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:235)"}, "properties": {"repobilityId": "e96311a3afc0f2f3", "scanner": "scanner-primary", "fingerprint": "0e7db5556ce5ae56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bd818f7f2764f77f", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:242)"}, "properties": {"repobilityId": "2715ee350566c59a", "scanner": "scanner-primary", "fingerprint": "bd818f7f2764f77f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ea7f6a6582f36f70", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:262)"}, "properties": {"repobilityId": "3f42232539ac840a", "scanner": "scanner-primary", "fingerprint": "ea7f6a6582f36f70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0d2d9e4ca8596b56", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:290)"}, "properties": {"repobilityId": "9f73647811d17d7e", "scanner": "scanner-primary", "fingerprint": "0d2d9e4ca8596b56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-68e68db062e40875", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:325)"}, "properties": {"repobilityId": "e82465418a084796", "scanner": "scanner-primary", "fingerprint": "68e68db062e40875", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7ef11f720a3d9dd3", "level": "error", "message": {"text": "Dangling fetch: GET /api/memory?projectId=${randomUUID()} (packages/core/tests/integration/memory-write-get-delete.test.ts:346)"}, "properties": {"repobilityId": "f7d0157c3fd8e13e", "scanner": "scanner-primary", "fingerprint": "7ef11f720a3d9dd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fdf4bb3a3fa6357c", "level": "error", "message": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:358)"}, "properties": {"repobilityId": "1f715e01dfa86f07", "scanner": "scanner-primary", "fingerprint": "fdf4bb3a3fa6357c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-146f69e9b2fedfc9", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:368)"}, "properties": {"repobilityId": "9f740a65150b9fed", "scanner": "scanner-primary", "fingerprint": "146f69e9b2fedfc9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-000cdba7a92cde74", "level": "error", "message": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId} (packages/core/tests/integration/memory-write-get-delete.test.ts:384)"}, "properties": {"repobilityId": "f6d085f4b282f8c6", "scanner": "scanner-primary", "fingerprint": "000cdba7a92cde74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dbfcb5a261984a89", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:397)"}, "properties": {"repobilityId": "ab40f151114cd7be", "scanner": "scanner-primary", "fingerprint": "dbfcb5a261984a89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-09553547df2569d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:407)"}, "properties": {"repobilityId": "ecf4449d5d0cea56", "scanner": "scanner-primary", "fingerprint": "09553547df2569d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cc97f69f99c2e8f7", "level": "error", "message": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=knowledge (packages/core/tests/integration/memory-write-get-delete.test.ts:418)"}, "properties": {"repobilityId": "772de6828abac5af", "scanner": "scanner-primary", "fingerprint": "cc97f69f99c2e8f7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b36b6524681eb5b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-write-get-delete.test.ts:432)"}, "properties": {"repobilityId": "b055e4ea47ecaf92", "scanner": "scanner-primary", "fingerprint": "b36b6524681eb5b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d62d40df673f90fa", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=gone (packages/core/tests/integration/memory-write-get-delete.test.ts:443)"}, "properties": {"repobilityId": "b0064ae8b0c2b5c2", "scanner": "scanner-primary", "fingerprint": "d62d40df673f90fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7838c3862f8f3af8", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:87)"}, "properties": {"repobilityId": "7e030f5a645e0948", "scanner": "scanner-primary", "fingerprint": "7838c3862f8f3af8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ac9bf2378487ee3f", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:108)"}, "properties": {"repobilityId": "82a3f7bf2cdd493f", "scanner": "scanner-primary", "fingerprint": "ac9bf2378487ee3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c27359c28b772d8d", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:171)"}, "properties": {"repobilityId": "1cb79bc976e5f43d", "scanner": "scanner-primary", "fingerprint": "c27359c28b772d8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3ef306b2f4837a9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:176)"}, "properties": {"repobilityId": "d1d712ff7e41db41", "scanner": "scanner-primary", "fingerprint": "3ef306b2f4837a9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e2e228c99b3a08be", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:198)"}, "properties": {"repobilityId": "4ce3bb7e46995e1d", "scanner": "scanner-primary", "fingerprint": "e2e228c99b3a08be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-564197a9b6d058a3", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:205)"}, "properties": {"repobilityId": "9efa7d62227db83f", "scanner": "scanner-primary", "fingerprint": "564197a9b6d058a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8b29b98699f20d15", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:229)"}, "properties": {"repobilityId": "cbf4a46f38a968b9", "scanner": "scanner-primary", "fingerprint": "8b29b98699f20d15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-186391322f6c37e6", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:240)"}, "properties": {"repobilityId": "4da21139c2f0b3e2", "scanner": "scanner-primary", "fingerprint": "186391322f6c37e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-71067866fcdf28cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:265)"}, "properties": {"repobilityId": "ab1e299585059457", "scanner": "scanner-primary", "fingerprint": "71067866fcdf28cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7747b574bdca8376", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:283)"}, "properties": {"repobilityId": "41048788161b6fc3", "scanner": "scanner-primary", "fingerprint": "7747b574bdca8376", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b7d3ce006cfafec5", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:312)"}, "properties": {"repobilityId": "28161551dd189be5", "scanner": "scanner-primary", "fingerprint": "b7d3ce006cfafec5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-68b7a7a1c31fba79", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:335)"}, "properties": {"repobilityId": "65531d1b8644af62", "scanner": "scanner-primary", "fingerprint": "68b7a7a1c31fba79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0bc45d07e1b90f62", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:351)"}, "properties": {"repobilityId": "4965d5017bfddbd7", "scanner": "scanner-primary", "fingerprint": "0bc45d07e1b90f62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26dd773629a478ec", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:381)"}, "properties": {"repobilityId": "228a8452dfdad5f4", "scanner": "scanner-primary", "fingerprint": "26dd773629a478ec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef27a124f0a75f93", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:415)"}, "properties": {"repobilityId": "560a5fe14b801489", "scanner": "scanner-primary", "fingerprint": "ef27a124f0a75f93", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e8e46d7dfa9db08", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:437)"}, "properties": {"repobilityId": "c41885d4a20a305c", "scanner": "scanner-primary", "fingerprint": "0e8e46d7dfa9db08", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0cf0d2ab2bfb0e1f", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:459)"}, "properties": {"repobilityId": "090630c0ae870a10", "scanner": "scanner-primary", "fingerprint": "0cf0d2ab2bfb0e1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-78bea8761af5142c", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:494)"}, "properties": {"repobilityId": "1e645bd1eee6ab4e", "scanner": "scanner-primary", "fingerprint": "78bea8761af5142c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-967c9c024d68b70e", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:499)"}, "properties": {"repobilityId": "fa8797535e4ec5c5", "scanner": "scanner-primary", "fingerprint": "967c9c024d68b70e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5104a0e3daa2ba76", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${fakeSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:515)"}, "properties": {"repobilityId": "cd7ee76e6dbf75f6", "scanner": "scanner-primary", "fingerprint": "5104a0e3daa2ba76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef66870294be8ffb", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${globalSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:533)"}, "properties": {"repobilityId": "5edf78a4e7a9b687", "scanner": "scanner-primary", "fingerprint": "ef66870294be8ffb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-88e61ea5e08355e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:559)"}, "properties": {"repobilityId": "d427d474da670bd0", "scanner": "scanner-primary", "fingerprint": "88e61ea5e08355e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-32f5fb1413a69415", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:574)"}, "properties": {"repobilityId": "c3920171e754570d", "scanner": "scanner-primary", "fingerprint": "32f5fb1413a69415", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-985f196acb41e613", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:594)"}, "properties": {"repobilityId": "92341f3b1b07b145", "scanner": "scanner-primary", "fingerprint": "985f196acb41e613", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-767da13e6ccafa46", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:599)"}, "properties": {"repobilityId": "97dd3fd4ec80f582", "scanner": "scanner-primary", "fingerprint": "767da13e6ccafa46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d75b767c5b0fa6e2", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/sync (packages/core/tests/integration/skill-routes.test.ts:616)"}, "properties": {"repobilityId": "8f015629f8485c0c", "scanner": "scanner-primary", "fingerprint": "d75b767c5b0fa6e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a4dd6150693f5c33", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${skillId}/register (packages/core/tests/integration/skill-routes.test.ts:635)"}, "properties": {"repobilityId": "17ebf9a482d5abc8", "scanner": "scanner-primary", "fingerprint": "a4dd6150693f5c33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fb70bf2bb4958a65", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${project.id}/skills/${foreignSkillId}/register (packages/core/tests/integration/skill-routes.test.ts:653)"}, "properties": {"repobilityId": "52dfb886ddfa70a1", "scanner": "scanner-primary", "fingerprint": "fb70bf2bb4958a65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-616c6e3c2406c81a", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:106)"}, "properties": {"repobilityId": "8fa7fb1c8a9fd3f1", "scanner": "scanner-primary", "fingerprint": "616c6e3c2406c81a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d760d74fddd2ee01", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:146)"}, "properties": {"repobilityId": "b3062b82f48464b9", "scanner": "scanner-primary", "fingerprint": "d760d74fddd2ee01", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f741db61956688bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:168)"}, "properties": {"repobilityId": "7a35fc1956e7d4bb", "scanner": "scanner-primary", "fingerprint": "f741db61956688bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2ab864ff2943a0df", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/tests/integration/health-routes.test.ts:193)"}, "properties": {"repobilityId": "672dc8d5b34e0863", "scanner": "scanner-primary", "fingerprint": "2ab864ff2943a0df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-19567e4bbdc0ab32", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory (packages/core/tests/integration/memory-live.test.ts:96)"}, "properties": {"repobilityId": "9b854ed6a7529430", "scanner": "scanner-primary", "fingerprint": "19567e4bbdc0ab32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b942deea7e6c580f", "level": "error", "message": {"text": "Dangling fetch: POST /api/memory/search (packages/core/tests/integration/memory-live.test.ts:104)"}, "properties": {"repobilityId": "f89cd1835c25554d", "scanner": "scanner-primary", "fingerprint": "b942deea7e6c580f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-20c6257b6ade208e", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/memory/by-source?projectId=${projectId}&source=note&sourceRef=to-delete (packages/core/tests/integration/memory-live.test.ts:261)"}, "properties": {"repobilityId": "912dcd95d0c267a9", "scanner": "scanner-primary", "fingerprint": "20c6257b6ade208e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e874b6057419e4e7", "level": "error", "message": {"text": "Dangling fetch: GET /api/memory?projectId=${projectId}&source=step_handoff (packages/core/tests/integration/memory-live.test.ts:298)"}, "properties": {"repobilityId": "93874f031f4a6d77", "scanner": "scanner-primary", "fingerprint": "e874b6057419e4e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8312efb6489860e4", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/projects/${projectId}/pipeline-config (packages/core/tests/integration/session-group-resume-e2e.test.ts:141)"}, "properties": {"repobilityId": "317bb583aefb7754", "scanner": "scanner-primary", "fingerprint": "8312efb6489860e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bbe2c59fb855c387", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:374)"}, "properties": {"repobilityId": "138819b14839899a", "scanner": "scanner-primary", "fingerprint": "bbe2c59fb855c387", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4987eb008864baa9", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId2}/prompt (packages/core/tests/integration/session-group-resume-e2e.test.ts:611)"}, "properties": {"repobilityId": "dddae3d6b1bb0b45", "scanner": "scanner-primary", "fingerprint": "4987eb008864baa9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-672500db4bb65883", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:129)"}, "properties": {"repobilityId": "a88954e32f40cf23", "scanner": "scanner-primary", "fingerprint": "672500db4bb65883", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cd9c479c21a5f8a7", "level": "error", "message": {"text": "Dangling fetch: GET /api/jobs/${jobId}/prompt (packages/core/tests/integration/jobs-prompt-route.test.ts:356)"}, "properties": {"repobilityId": "fd53d3e2ebc589d7", "scanner": "scanner-primary", "fingerprint": "cd9c479c21a5f8a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2920c80356865fe6", "level": "error", "message": {"text": "Dangling fetch: GET /no-such-route (packages/core/src/index.test.ts:85)"}, "properties": {"repobilityId": "1e7a517685d2c4b0", "scanner": "scanner-primary", "fingerprint": "2920c80356865fe6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-10072c96b83c077c", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations (packages/core/src/integrations/routes.test.ts:111)"}, "properties": {"repobilityId": "a46bc0b1e9b81585", "scanner": "scanner-primary", "fingerprint": "10072c96b83c077c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-238564b358dfd66f", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/projects/${PROJECT_ID}/integrations/${id} (packages/core/src/integrations/routes.test.ts:122)"}, "properties": {"repobilityId": "9d27042e0b81b809", "scanner": "scanner-primary", "fingerprint": "238564b358dfd66f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b1895b6570e2eda9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/integration-connections/conn-ep (packages/core/src/integrations/routes.test.ts:459)"}, "properties": {"repobilityId": "bdebf7cf31a837f7", "scanner": "scanner-primary", "fingerprint": "b1895b6570e2eda9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4f9ba2a0d22f7e33", "level": "error", "message": {"text": "Dangling fetch: POST /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:713)"}, "properties": {"repobilityId": "c8ca8144384c5dc0", "scanner": "scanner-primary", "fingerprint": "4f9ba2a0d22f7e33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8671f6b696df749f", "level": "error", "message": {"text": "Dangling fetch: GET /api/integration-connections/${id}/bindings (packages/core/src/integrations/routes.test.ts:721)"}, "properties": {"repobilityId": "d6a4d89d430d9a9e", "scanner": "scanner-primary", "fingerprint": "8671f6b696df749f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dca51846d87a04c3", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/integrations/${id}/deliveries/${deliveryId}/retry (packages/core/src/integrations/routes.test.ts:895)"}, "properties": {"repobilityId": "802c3b5b1bab0531", "scanner": "scanner-primary", "fingerprint": "dca51846d87a04c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f287ba6b186fc143", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/integrations/mcp-preview (packages/core/src/integrations/routes.test.ts:1001)"}, "properties": {"repobilityId": "b7d669af68e6f90b", "scanner": "scanner-primary", "fingerprint": "f287ba6b186fc143", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-531860cffe558f83", "level": "error", "message": {"text": "Dangling fetch: POST /api/integration-connections/${id}/test (packages/core/src/integrations/connection-test-route.test.ts:121)"}, "properties": {"repobilityId": "af44685811ad90c6", "scanner": "scanner-primary", "fingerprint": "531860cffe558f83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1913e16ee9cc080b", "level": "error", "message": {"text": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:74)"}, "properties": {"repobilityId": "b5a2d6b5c6f1ca1e", "scanner": "scanner-primary", "fingerprint": "1913e16ee9cc080b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c30ee27460cad9a8", "level": "error", "message": {"text": "Dangling fetch: POST /api/usage-records (packages/core/src/usage-records/routes.test.ts:89)"}, "properties": {"repobilityId": "ff4d781d1e04c36c", "scanner": "scanner-primary", "fingerprint": "c30ee27460cad9a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef21844af96299cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/usage-records/bulk (packages/core/src/usage-records/routes.test.ts:115)"}, "properties": {"repobilityId": "524552d626fc13e5", "scanner": "scanner-primary", "fingerprint": "ef21844af96299cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-554ec0753a09cae3", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:73)"}, "properties": {"repobilityId": "3bb19c8ba6be89d5", "scanner": "scanner-primary", "fingerprint": "554ec0753a09cae3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d53f9dbdaf6964ef", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:101)"}, "properties": {"repobilityId": "2eda7a67f63ac8f4", "scanner": "scanner-primary", "fingerprint": "d53f9dbdaf6964ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a3faa9dab2b6d400", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:127)"}, "properties": {"repobilityId": "f6efd2d180f1de25", "scanner": "scanner-primary", "fingerprint": "a3faa9dab2b6d400", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f403abe0ff9ecb5e", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:152)"}, "properties": {"repobilityId": "64bb5e4bd1cae520", "scanner": "scanner-primary", "fingerprint": "f403abe0ff9ecb5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5e0d98ca432616e1", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:168)"}, "properties": {"repobilityId": "cdbe78e62a68094c", "scanner": "scanner-primary", "fingerprint": "5e0d98ca432616e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4c2bb9e3c00e5e6e", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:187)"}, "properties": {"repobilityId": "c8bfba185b3a9a1f", "scanner": "scanner-primary", "fingerprint": "4c2bb9e3c00e5e6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c19bc615f263851", "level": "error", "message": {"text": "Dangling fetch: POST /api/prompts/preview (packages/core/src/prompt/routes.test.ts:216)"}, "properties": {"repobilityId": "50f26416839d18da", "scanner": "scanner-primary", "fingerprint": "0c19bc615f263851", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eebe6b80b4d242fc", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${REPO}/releases?per_page=50 (packages/core/src/install/fetch-release.ts:78)"}, "properties": {"repobilityId": "c8ba9a2ba3007457", "scanner": "scanner-primary", "fingerprint": "eebe6b80b4d242fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c5d8ece042d81588", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:88)"}, "properties": {"repobilityId": "03d8b1a6d3f51ac5", "scanner": "scanner-primary", "fingerprint": "c5d8ece042d81588", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2dd6cc2dcbaa8918", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications/unread-count (packages/core/src/notifications/routes.test.ts:95)"}, "properties": {"repobilityId": "4c922f0bef2a2189", "scanner": "scanner-primary", "fingerprint": "2dd6cc2dcbaa8918", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-05fc4b6abe25a026", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications (packages/core/src/notifications/routes.test.ts:110)"}, "properties": {"repobilityId": "8511bada9d315b6c", "scanner": "scanner-primary", "fingerprint": "05fc4b6abe25a026", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b17ba96f2ad457b2", "level": "error", "message": {"text": "Dangling fetch: GET /api/notifications?projectId=not-a-uuid (packages/core/src/notifications/routes.test.ts:120)"}, "properties": {"repobilityId": "0d2813e9c36fd522", "scanner": "scanner-primary", "fingerprint": "b17ba96f2ad457b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6dc1c6f812c2d7fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/notifications/mark-all-read (packages/core/src/notifications/routes.test.ts:131)"}, "properties": {"repobilityId": "bece8bff1fe9b5e6", "scanner": "scanner-primary", "fingerprint": "6dc1c6f812c2d7fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b8a09d75b232f6c8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:151)"}, "properties": {"repobilityId": "43df422942dc824b", "scanner": "scanner-primary", "fingerprint": "b8a09d75b232f6c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-826efdfe32d8794a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:163)"}, "properties": {"repobilityId": "5d29c0527822e0ba", "scanner": "scanner-primary", "fingerprint": "826efdfe32d8794a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75c2c535a7fab50b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:176)"}, "properties": {"repobilityId": "08288f0469444374", "scanner": "scanner-primary", "fingerprint": "75c2c535a7fab50b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ccea4971d6693bc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/notifications/${NOTIF_ID} (packages/core/src/notifications/routes.test.ts:186)"}, "properties": {"repobilityId": "5e5e81bde1d8553e", "scanner": "scanner-primary", "fingerprint": "1ccea4971d6693bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b5c5fd78fd35eed", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:145)"}, "properties": {"repobilityId": "486e6d3549926ece", "scanner": "scanner-primary", "fingerprint": "2b5c5fd78fd35eed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9914f61560e55d61", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:159)"}, "properties": {"repobilityId": "34627bec81079bae", "scanner": "scanner-primary", "fingerprint": "9914f61560e55d61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2cc8bab4c7547066", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:169)"}, "properties": {"repobilityId": "fc051337b5fdfb2a", "scanner": "scanner-primary", "fingerprint": "2cc8bab4c7547066", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d1b806d3ad030eaf", "level": "error", "message": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:180)"}, "properties": {"repobilityId": "acf1d22161739ecb", "scanner": "scanner-primary", "fingerprint": "d1b806d3ad030eaf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d7c6b031c91a7365", "level": "error", "message": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:194)"}, "properties": {"repobilityId": "4c9caaecf9ce4662", "scanner": "scanner-primary", "fingerprint": "d7c6b031c91a7365", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-876d2ee4f2d4d839", "level": "error", "message": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:209)"}, "properties": {"repobilityId": "83829950a0fd1321", "scanner": "scanner-primary", "fingerprint": "876d2ee4f2d4d839", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-395b9c7df1adfca7", "level": "error", "message": {"text": "Dangling fetch: PUT /api/projects/${PROJECT_ID}/pm/config (packages/core/src/pm/routes-crud.test.ts:220)"}, "properties": {"repobilityId": "8f6b743a69c24c02", "scanner": "scanner-primary", "fingerprint": "395b9c7df1adfca7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b13d503ca7cc9d09", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:243)"}, "properties": {"repobilityId": "aae936aac67287f6", "scanner": "scanner-primary", "fingerprint": "b13d503ca7cc9d09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e839166fe8b9d4f2", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/pm/policies (packages/core/src/pm/routes-crud.test.ts:258)"}, "properties": {"repobilityId": "2a24b744c717d232", "scanner": "scanner-primary", "fingerprint": "e839166fe8b9d4f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cc4ff002d04a1487", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:272)"}, "properties": {"repobilityId": "9b68daf633af5b80", "scanner": "scanner-primary", "fingerprint": "cc4ff002d04a1487", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f5aaf565ac8ef3a8", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:284)"}, "properties": {"repobilityId": "86580ca83581e336", "scanner": "scanner-primary", "fingerprint": "f5aaf565ac8ef3a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dfc300d3bba0e50f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/pm/policies/${POLICY_ID} (packages/core/src/pm/routes-crud.test.ts:295)"}, "properties": {"repobilityId": "c5c3c14c3d74df46", "scanner": "scanner-primary", "fingerprint": "dfc300d3bba0e50f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8fbd69ab8e3996b7", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions?page=1&pageSize=10 (packages/core/src/pm/routes-crud.test.ts:311)"}, "properties": {"repobilityId": "ad420384f0f3273b", "scanner": "scanner-primary", "fingerprint": "8fbd69ab8e3996b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7435aad10221f8bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pm/decisions (packages/core/src/pm/routes-crud.test.ts:322)"}, "properties": {"repobilityId": "b3b9dd97c6d5d25b", "scanner": "scanner-primary", "fingerprint": "7435aad10221f8bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37bdea4b6e852134", "level": "error", "message": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:39)"}, "properties": {"repobilityId": "b73c913d3e0d3753", "scanner": "scanner-primary", "fingerprint": "37bdea4b6e852134", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5532eb295af83df8", "level": "error", "message": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:47)"}, "properties": {"repobilityId": "1c8840014b1b982c", "scanner": "scanner-primary", "fingerprint": "5532eb295af83df8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b90c7256d8f20a79", "level": "error", "message": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:54)"}, "properties": {"repobilityId": "8c9e94680d86565c", "scanner": "scanner-primary", "fingerprint": "b90c7256d8f20a79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ffd900dd2db90c68", "level": "error", "message": {"text": "Dangling fetch: GET /set (packages/core/src/auth/cookie.test.ts:63)"}, "properties": {"repobilityId": "c1f7a3b3faa90faf", "scanner": "scanner-primary", "fingerprint": "ffd900dd2db90c68", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a37f31c17cf11f3f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/local (packages/core/src/auth/login.test.ts:49)"}, "properties": {"repobilityId": "a30cba5f417508c9", "scanner": "scanner-primary", "fingerprint": "a37f31c17cf11f3f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ab8ae2497f76067c", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:38)"}, "properties": {"repobilityId": "777736825f6af71e", "scanner": "scanner-primary", "fingerprint": "ab8ae2497f76067c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-862d83398ac7d54e", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:44)"}, "properties": {"repobilityId": "06ff2f03627b0dcc", "scanner": "scanner-primary", "fingerprint": "862d83398ac7d54e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-784f148afed25897", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/logout (packages/core/src/auth/logout.test.ts:58)"}, "properties": {"repobilityId": "2b1181a60bd108a8", "scanner": "scanner-primary", "fingerprint": "784f148afed25897", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb1fa88896a5dde6", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:61)"}, "properties": {"repobilityId": "b6f8edf13ee798b8", "scanner": "scanner-primary", "fingerprint": "bb1fa88896a5dde6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2e4c58541eae2b6f", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:67)"}, "properties": {"repobilityId": "36adf443ac4a7008", "scanner": "scanner-primary", "fingerprint": "2e4c58541eae2b6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9291902a71296374", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/preferences (packages/core/src/auth/preferences.test.ts:84)"}, "properties": {"repobilityId": "c641848d98e00b3c", "scanner": "scanner-primary", "fingerprint": "9291902a71296374", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6668a7156cbbad34", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:99)"}, "properties": {"repobilityId": "f3b3a3e94902a5ec", "scanner": "scanner-primary", "fingerprint": "6668a7156cbbad34", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-beda73d22932da19", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:108)"}, "properties": {"repobilityId": "4669e2de65d32e40", "scanner": "scanner-primary", "fingerprint": "beda73d22932da19", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c7c5961a612e2161", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/preferences (packages/core/src/auth/preferences.test.ts:130)"}, "properties": {"repobilityId": "d5abe840fb8b5abf", "scanner": "scanner-primary", "fingerprint": "c7c5961a612e2161", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6dd934852b63d8c7", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:69)"}, "properties": {"repobilityId": "722b2c7d14dad0d4", "scanner": "scanner-primary", "fingerprint": "6dd934852b63d8c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-30cee8409d9f6bbf", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:95)"}, "properties": {"repobilityId": "f95e200fcdbe0164", "scanner": "scanner-primary", "fingerprint": "30cee8409d9f6bbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-41ae11c272168fb3", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:110)"}, "properties": {"repobilityId": "eb3134c51ae9af51", "scanner": "scanner-primary", "fingerprint": "41ae11c272168fb3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-55a6c439e8f2cc69", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:122)"}, "properties": {"repobilityId": "97be16976635968b", "scanner": "scanner-primary", "fingerprint": "55a6c439e8f2cc69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cfa49ebf0750a456", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:136)"}, "properties": {"repobilityId": "2673c4b7bbd50a3f", "scanner": "scanner-primary", "fingerprint": "cfa49ebf0750a456", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f4f1913e9ae06dfb", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:151)"}, "properties": {"repobilityId": "f9b74092d2cb9590", "scanner": "scanner-primary", "fingerprint": "f4f1913e9ae06dfb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75969105af2b2ded", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/register (packages/core/src/auth/register.test.ts:171)"}, "properties": {"repobilityId": "dba694ef76eb745d", "scanner": "scanner-primary", "fingerprint": "75969105af2b2ded", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d50c5c75e515444f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/refresh (packages/core/src/auth/refresh.test.ts:137)"}, "properties": {"repobilityId": "0cc9b9afa9b4b5a4", "scanner": "scanner-primary", "fingerprint": "d50c5c75e515444f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f9b0e4923914efd4", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:71)"}, "properties": {"repobilityId": "1c75761225fa254b", "scanner": "scanner-primary", "fingerprint": "f9b0e4923914efd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-32dde17527e2e7d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:89)"}, "properties": {"repobilityId": "ec7d44f9982240e1", "scanner": "scanner-primary", "fingerprint": "32dde17527e2e7d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-663da1d4e9452205", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:117)"}, "properties": {"repobilityId": "57473c65b63b9a3f", "scanner": "scanner-primary", "fingerprint": "663da1d4e9452205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-52092fa53b08f33b", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:144)"}, "properties": {"repobilityId": "b678b563b9624f28", "scanner": "scanner-primary", "fingerprint": "52092fa53b08f33b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a0ef08c163b43085", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (packages/core/src/auth/me.test.ts:157)"}, "properties": {"repobilityId": "2da793eb803271ba", "scanner": "scanner-primary", "fingerprint": "a0ef08c163b43085", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d4faf68dca2f83c6", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:168)"}, "properties": {"repobilityId": "e7f001d49dc19345", "scanner": "scanner-primary", "fingerprint": "d4faf68dca2f83c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1624aed902f7e126", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:188)"}, "properties": {"repobilityId": "1ce60d45f53fc0b3", "scanner": "scanner-primary", "fingerprint": "1624aed902f7e126", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0b577c42f86cd0b6", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me/preferences (packages/core/src/auth/me.test.ts:198)"}, "properties": {"repobilityId": "4ef308d78603ab7c", "scanner": "scanner-primary", "fingerprint": "0b577c42f86cd0b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1f586ebda76476c9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:209)"}, "properties": {"repobilityId": "2721916273e2a9f8", "scanner": "scanner-primary", "fingerprint": "1f586ebda76476c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c57ceb11d69e3661", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:225)"}, "properties": {"repobilityId": "49227f30e2d4a9db", "scanner": "scanner-primary", "fingerprint": "c57ceb11d69e3661", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f562dcc36d0e2436", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:241)"}, "properties": {"repobilityId": "b15dfff99a005fbc", "scanner": "scanner-primary", "fingerprint": "f562dcc36d0e2436", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-47c01896a5e3b155", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:254)"}, "properties": {"repobilityId": "ab33def627b0a3de", "scanner": "scanner-primary", "fingerprint": "47c01896a5e3b155", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3e9a57f792f59dc7", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:264)"}, "properties": {"repobilityId": "15524f14069591c1", "scanner": "scanner-primary", "fingerprint": "3e9a57f792f59dc7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ff095fb8f5bc007c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:274)"}, "properties": {"repobilityId": "0c366eda0f26d455", "scanner": "scanner-primary", "fingerprint": "ff095fb8f5bc007c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a02e64597e77fbf", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:290)"}, "properties": {"repobilityId": "cc6a548b68c2611d", "scanner": "scanner-primary", "fingerprint": "8a02e64597e77fbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a2c6433eaccbd3e2", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:307)"}, "properties": {"repobilityId": "5a0a35c1d84d505d", "scanner": "scanner-primary", "fingerprint": "a2c6433eaccbd3e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9deed053fb21e1f5", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:321)"}, "properties": {"repobilityId": "7033014e7260fbf9", "scanner": "scanner-primary", "fingerprint": "9deed053fb21e1f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-82ce61f71bad8678", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:335)"}, "properties": {"repobilityId": "feecc0f294880c52", "scanner": "scanner-primary", "fingerprint": "82ce61f71bad8678", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-067ae0270bbc8a5a", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/auth/me/preferences (packages/core/src/auth/me.test.ts:349)"}, "properties": {"repobilityId": "e5f23aca0f3547d3", "scanner": "scanner-primary", "fingerprint": "067ae0270bbc8a5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eefc91d21015b087", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/verify?token=good (packages/core/src/auth/verify.test.ts:35)"}, "properties": {"repobilityId": "544a3e81c21e46e2", "scanner": "scanner-primary", "fingerprint": "eefc91d21015b087", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3d51c5a25d959ad8", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/verify?token=missing (packages/core/src/auth/verify.test.ts:43)"}, "properties": {"repobilityId": "e1a9bc5d9821aaa5", "scanner": "scanner-primary", "fingerprint": "3d51c5a25d959ad8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e54e45ee496596db", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:50)"}, "properties": {"repobilityId": "2b0529d3715b92fe", "scanner": "scanner-primary", "fingerprint": "e54e45ee496596db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e6cfc81b5e095d9d", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/verify (packages/core/src/auth/verify.test.ts:56)"}, "properties": {"repobilityId": "8b5651d8f2661671", "scanner": "scanner-primary", "fingerprint": "e6cfc81b5e095d9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1d97cfb8dad56d0b", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:66)"}, "properties": {"repobilityId": "58d17df32e1b3f72", "scanner": "scanner-primary", "fingerprint": "1d97cfb8dad56d0b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e6453557b4192e24", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/verify?token=query-token (packages/core/src/auth/verify.test.ts:78)"}, "properties": {"repobilityId": "4599859112da8b28", "scanner": "scanner-primary", "fingerprint": "e6453557b4192e24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e9fa8cb2590daed", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/verify (packages/core/src/auth/verify.test.ts:86)"}, "properties": {"repobilityId": "b0caa98522393cd5", "scanner": "scanner-primary", "fingerprint": "0e9fa8cb2590daed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-448c7410b961465c", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/verify?token=old (packages/core/src/auth/verify.test.ts:94)"}, "properties": {"repobilityId": "816945496e36dba0", "scanner": "scanner-primary", "fingerprint": "448c7410b961465c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-754a2fc199ce0dab", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/reauth (packages/core/src/auth/reauth.test.ts:51)"}, "properties": {"repobilityId": "00e5ad42ad7e5cd8", "scanner": "scanner-primary", "fingerprint": "754a2fc199ce0dab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-095952d6eb9236dc", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/desktop/pair-init (packages/core/src/auth/desktop/pairing-routes.test.ts:81)"}, "properties": {"repobilityId": "3c8e34e60c7441b6", "scanner": "scanner-primary", "fingerprint": "095952d6eb9236dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-74f58742eb37ad1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:89)"}, "properties": {"repobilityId": "25c91e836fe6ab93", "scanner": "scanner-primary", "fingerprint": "74f58742eb37ad1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ccab44375af58d2f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/desktop/approve (packages/core/src/auth/desktop/pairing-routes.test.ts:176)"}, "properties": {"repobilityId": "216d8d3321bb9991", "scanner": "scanner-primary", "fingerprint": "ccab44375af58d2f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cb8a23a9cbe9d253", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/desktop/poll (packages/core/src/auth/desktop/pairing-routes.test.ts:249)"}, "properties": {"repobilityId": "084c29370500364c", "scanner": "scanner-primary", "fingerprint": "cb8a23a9cbe9d253", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5ad5bd1ba097e48c", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:104)"}, "properties": {"repobilityId": "f81ff6d05d5f83fb", "scanner": "scanner-primary", "fingerprint": "5ad5bd1ba097e48c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3f1f3f3fdf8dce8f", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:124)"}, "properties": {"repobilityId": "4f919fb02040980c", "scanner": "scanner-primary", "fingerprint": "3f1f3f3fdf8dce8f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c910a61333940c17", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:139)"}, "properties": {"repobilityId": "dc122ce626b55b0b", "scanner": "scanner-primary", "fingerprint": "c910a61333940c17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cefd12eae96eea42", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:156)"}, "properties": {"repobilityId": "dece34edb4b8eb27", "scanner": "scanner-primary", "fingerprint": "cefd12eae96eea42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f5a6babf78c76019", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/oauth/github/callback?code=c&state=state-nonce (packages/core/src/auth/oauth/reauth-callback.test.ts:172)"}, "properties": {"repobilityId": "be4c2180b711108e", "scanner": "scanner-primary", "fingerprint": "f5a6babf78c76019", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e3e368865c778456", "level": "error", "message": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:32)"}, "properties": {"repobilityId": "e998086c82892776", "scanner": "scanner-primary", "fingerprint": "e3e368865c778456", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bc99d236c351efec", "level": "error", "message": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:40)"}, "properties": {"repobilityId": "5c0b266ae4599787", "scanner": "scanner-primary", "fingerprint": "bc99d236c351efec", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6b264b8bfdc9f898", "level": "error", "message": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:51)"}, "properties": {"repobilityId": "9ef5706edef786d5", "scanner": "scanner-primary", "fingerprint": "6b264b8bfdc9f898", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-169e11997ca6d086", "level": "error", "message": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:61)"}, "properties": {"repobilityId": "5543268e44e6a333", "scanner": "scanner-primary", "fingerprint": "169e11997ca6d086", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-df753ee05caa6113", "level": "error", "message": {"text": "Dangling fetch: GET /secure/echo (packages/core/src/middleware/api-key.test.ts:69)"}, "properties": {"repobilityId": "9406af2ae61cdced", "scanner": "scanner-primary", "fingerprint": "df753ee05caa6113", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9bea3be0fa73bc7d", "level": "error", "message": {"text": "Dangling fetch: GET /principals (packages/core/src/middleware/require-device.test.ts:120)"}, "properties": {"repobilityId": "f9d8cf055069fa9e", "scanner": "scanner-primary", "fingerprint": "9bea3be0fa73bc7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-57818927fb91e6e8", "level": "error", "message": {"text": "Dangling fetch: GET /gated (packages/core/src/middleware/require-fresh-auth.test.ts:36)"}, "properties": {"repobilityId": "379e72f982dc3559", "scanner": "scanner-primary", "fingerprint": "57818927fb91e6e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6229da15d90c92df", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:46)"}, "properties": {"repobilityId": "7107e6710c1f2bcd", "scanner": "scanner-primary", "fingerprint": "6229da15d90c92df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee2d1aaf745d2b3c", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:47)"}, "properties": {"repobilityId": "304d6e76f53772dc", "scanner": "scanner-primary", "fingerprint": "ee2d1aaf745d2b3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e3d208fd75820770", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:48)"}, "properties": {"repobilityId": "1e2e369b13fe51d4", "scanner": "scanner-primary", "fingerprint": "e3d208fd75820770", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3fc0dcf3652a1735", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:70)"}, "properties": {"repobilityId": "2c9372495b342da5", "scanner": "scanner-primary", "fingerprint": "3fc0dcf3652a1735", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-493194eaae27ff4f", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:71)"}, "properties": {"repobilityId": "84a2040f5f677999", "scanner": "scanner-primary", "fingerprint": "493194eaae27ff4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d97c094bbef3410c", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:75)"}, "properties": {"repobilityId": "9b998b5ac62fd4c0", "scanner": "scanner-primary", "fingerprint": "d97c094bbef3410c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a62a1d9de37e542c", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:81)"}, "properties": {"repobilityId": "7a23379923114d93", "scanner": "scanner-primary", "fingerprint": "a62a1d9de37e542c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2767a2ce9f6cb900", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:84)"}, "properties": {"repobilityId": "58835e593e05af10", "scanner": "scanner-primary", "fingerprint": "2767a2ce9f6cb900", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c3ef3b415d46729b", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:87)"}, "properties": {"repobilityId": "d5f2e23ca630c3e8", "scanner": "scanner-primary", "fingerprint": "c3ef3b415d46729b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-975b9d8b0cd97fd1", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:97)"}, "properties": {"repobilityId": "20291dffe0f97c90", "scanner": "scanner-primary", "fingerprint": "975b9d8b0cd97fd1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6c638d3e28ab702c", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:100)"}, "properties": {"repobilityId": "17f3aec6d7532e01", "scanner": "scanner-primary", "fingerprint": "6c638d3e28ab702c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b10963d9782d6e54", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:103)"}, "properties": {"repobilityId": "720d1b56810a0ef7", "scanner": "scanner-primary", "fingerprint": "b10963d9782d6e54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-495d2eb27adbf88e", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:111)"}, "properties": {"repobilityId": "6065cb78a603f877", "scanner": "scanner-primary", "fingerprint": "495d2eb27adbf88e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d703d5cc51ddfa81", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:114)"}, "properties": {"repobilityId": "0d674469470789df", "scanner": "scanner-primary", "fingerprint": "d703d5cc51ddfa81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7418288625bde4ef", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:118)"}, "properties": {"repobilityId": "deb68cbe1d459477", "scanner": "scanner-primary", "fingerprint": "7418288625bde4ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3db9a6c32c6068d2", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:127)"}, "properties": {"repobilityId": "3d6fabbf348042ca", "scanner": "scanner-primary", "fingerprint": "3db9a6c32c6068d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-206efcbb30f396fe", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:128)"}, "properties": {"repobilityId": "e3c8c25d99f679e0", "scanner": "scanner-primary", "fingerprint": "206efcbb30f396fe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-34c01f0851d68ba7", "level": "error", "message": {"text": "Dangling fetch: GET /hit (packages/core/src/middleware/rate-limit.test.ts:135)"}, "properties": {"repobilityId": "224fe9f6211162e0", "scanner": "scanner-primary", "fingerprint": "34c01f0851d68ba7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-31cfcd2b0a0e5818", "level": "error", "message": {"text": "Dangling fetch: GET /ok (packages/core/src/middleware/logger.test.ts:51)"}, "properties": {"repobilityId": "a54cbed29c44ddd4", "scanner": "scanner-primary", "fingerprint": "31cfcd2b0a0e5818", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2256a63c46066dc9", "level": "error", "message": {"text": "Dangling fetch: GET /client (packages/core/src/middleware/logger.test.ts:61)"}, "properties": {"repobilityId": "84249462ee143d41", "scanner": "scanner-primary", "fingerprint": "2256a63c46066dc9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-795c468d58e98430", "level": "error", "message": {"text": "Dangling fetch: GET /server (packages/core/src/middleware/logger.test.ts:68)"}, "properties": {"repobilityId": "9ba674b58bdfb2dd", "scanner": "scanner-primary", "fingerprint": "795c468d58e98430", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe678b6a3024781f", "level": "error", "message": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:45)"}, "properties": {"repobilityId": "e76149babc5ccbbd", "scanner": "scanner-primary", "fingerprint": "fe678b6a3024781f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f9d2eb0263a42848", "level": "error", "message": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:52)"}, "properties": {"repobilityId": "17776993d6879a79", "scanner": "scanner-primary", "fingerprint": "f9d2eb0263a42848", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-deb77d975fd23ba5", "level": "error", "message": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:62)"}, "properties": {"repobilityId": "2542aba2b0895d30", "scanner": "scanner-primary", "fingerprint": "deb77d975fd23ba5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90c45172435bd49a", "level": "error", "message": {"text": "Dangling fetch: GET /protected (packages/core/src/middleware/auth.test.ts:71)"}, "properties": {"repobilityId": "497e80370bccd8c4", "scanner": "scanner-primary", "fingerprint": "90c45172435bd49a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d828883f142f940e", "level": "error", "message": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:84)"}, "properties": {"repobilityId": "f90e19f9fbefd45d", "scanner": "scanner-primary", "fingerprint": "d828883f142f940e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d8e3e96affc11bcb", "level": "error", "message": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:97)"}, "properties": {"repobilityId": "b4a407c99ebcffb3", "scanner": "scanner-primary", "fingerprint": "d8e3e96affc11bcb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3effb00fb2b741f8", "level": "error", "message": {"text": "Dangling fetch: GET /verified (packages/core/src/middleware/auth.test.ts:109)"}, "properties": {"repobilityId": "41964dd8f6340d39", "scanner": "scanner-primary", "fingerprint": "3effb00fb2b741f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4fb10c5b0542ae72", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:83)"}, "properties": {"repobilityId": "156147620a49ea98", "scanner": "scanner-primary", "fingerprint": "4fb10c5b0542ae72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-760187fa4ce86e9b", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex-cause (packages/core/src/middleware/error.test.ts:92)"}, "properties": {"repobilityId": "88d1311e9fd8979a", "scanner": "scanner-primary", "fingerprint": "760187fa4ce86e9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8cd515b83c4b4107", "level": "error", "message": {"text": "Dangling fetch: GET /boom (packages/core/src/middleware/error.test.ts:103)"}, "properties": {"repobilityId": "12844d98920117b6", "scanner": "scanner-primary", "fingerprint": "8cd515b83c4b4107", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4581f0797d29a279", "level": "error", "message": {"text": "Dangling fetch: GET /nope (packages/core/src/middleware/error.test.ts:112)"}, "properties": {"repobilityId": "9242275fbabf5b12", "scanner": "scanner-primary", "fingerprint": "4581f0797d29a279", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-31bb9d8a37e9af8b", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex-www-auth (packages/core/src/middleware/error.test.ts:120)"}, "properties": {"repobilityId": "f2fa2f1cc28c2b21", "scanner": "scanner-primary", "fingerprint": "31bb9d8a37e9af8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ccf5490b0b3a6a22", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex (packages/core/src/middleware/error.test.ts:131)"}, "properties": {"repobilityId": "440e6c01c463ca0e", "scanner": "scanner-primary", "fingerprint": "ccf5490b0b3a6a22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b25f1e69e1c6774c", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex-500-www-auth (packages/core/src/middleware/error.test.ts:136)"}, "properties": {"repobilityId": "8260b3561941184e", "scanner": "scanner-primary", "fingerprint": "b25f1e69e1c6774c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-63b85cbdc8ee65df", "level": "error", "message": {"text": "Dangling fetch: GET /http-ex-error-cause (packages/core/src/middleware/error.test.ts:145)"}, "properties": {"repobilityId": "f58dad1d6d4e7d6e", "scanner": "scanner-primary", "fingerprint": "63b85cbdc8ee65df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-87d6c02d0ab93967", "level": "error", "message": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:15)"}, "properties": {"repobilityId": "b54f6548b22ec68f", "scanner": "scanner-primary", "fingerprint": "87d6c02d0ab93967", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9ae35acc25ea4cfe", "level": "error", "message": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:25)"}, "properties": {"repobilityId": "3614ccfb9c0c26a5", "scanner": "scanner-primary", "fingerprint": "9ae35acc25ea4cfe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d82a9f34df8cc8bd", "level": "error", "message": {"text": "Dangling fetch: GET /echo (packages/core/src/middleware/request-id.test.ts:35)"}, "properties": {"repobilityId": "35e716a6f17b34f4", "scanner": "scanner-primary", "fingerprint": "d82a9f34df8cc8bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0250ff0b7fc58fbd", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects${path} (packages/core/src/projects/routes.test.ts:156)"}, "properties": {"repobilityId": "1c4056fbd5857163", "scanner": "scanner-primary", "fingerprint": "0250ff0b7fc58fbd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ea2f03d66c76fc9a", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:106)"}, "properties": {"repobilityId": "cdd46e831466f7b4", "scanner": "scanner-primary", "fingerprint": "ea2f03d66c76fc9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ad6c6cfe58ad70f", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:118)"}, "properties": {"repobilityId": "82a18ed8840ea531", "scanner": "scanner-primary", "fingerprint": "1ad6c6cfe58ad70f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-53a29fc24d263c5c", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:137)"}, "properties": {"repobilityId": "4e5ad4a7f955350e", "scanner": "scanner-primary", "fingerprint": "53a29fc24d263c5c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c39bd6759fb4c897", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:161)"}, "properties": {"repobilityId": "cfcebde9b45d88ac", "scanner": "scanner-primary", "fingerprint": "c39bd6759fb4c897", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dd4b2498a91ac6ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/members/invite (packages/core/src/projects/members-routes.test.ts:190)"}, "properties": {"repobilityId": "aedd5b0d2f102669", "scanner": "scanner-primary", "fingerprint": "dd4b2498a91ac6ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-482ceb8aa8d115ed", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.ts:211)"}, "properties": {"repobilityId": "3a604e796a0349b6", "scanner": "scanner-primary", "fingerprint": "482ceb8aa8d115ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-db9169cc936ad3d5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/${OTHER_ID} (packages/core/src/projects/members-routes.test.ts:226)"}, "properties": {"repobilityId": "d9b1520aa6f16441", "scanner": "scanner-primary", "fingerprint": "db9169cc936ad3d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-788468c33b489851", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:259)"}, "properties": {"repobilityId": "8c1bf61c39256974", "scanner": "scanner-primary", "fingerprint": "788468c33b489851", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf64b2dcc8f689a9", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:275)"}, "properties": {"repobilityId": "e3c9eec0b8b0ace2", "scanner": "scanner-primary", "fingerprint": "cf64b2dcc8f689a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0b8e833381dbf6a7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/projects/members-routes.test.ts:289)"}, "properties": {"repobilityId": "8aea23c355ef98a6", "scanner": "scanner-primary", "fingerprint": "0b8e833381dbf6a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2a964c0cb6c41818", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=missing@example.com (packages/core/src/projects/members-routes.test.ts:303)"}, "properties": {"repobilityId": "91a23c04fc766b1a", "scanner": "scanner-primary", "fingerprint": "2a964c0cb6c41818", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e1853d5886eac3ef", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations?email=pending@example.com (packages/core/src/projects/members-routes.test.ts:317)"}, "properties": {"repobilityId": "f8a3a57e2a0dd9a3", "scanner": "scanner-primary", "fingerprint": "e1853d5886eac3ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e78c16f601dc839", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/projects/${PROJECT_ID}/members/invitations (packages/core/src/projects/members-routes.test.ts:328)"}, "properties": {"repobilityId": "1eb7d39e587c40ed", "scanner": "scanner-primary", "fingerprint": "1e78c16f601dc839", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c52786d2432ee1df", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:97)"}, "properties": {"repobilityId": "63b7178234512c26", "scanner": "scanner-primary", "fingerprint": "c52786d2432ee1df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2c9fa92db9ad846c", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:105)"}, "properties": {"repobilityId": "cdbeaf203660f665", "scanner": "scanner-primary", "fingerprint": "2c9fa92db9ad846c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb1f5f14fec8bf36", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:129)"}, "properties": {"repobilityId": "79ceabb461d42d8e", "scanner": "scanner-primary", "fingerprint": "bb1f5f14fec8bf36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-355d6578ca2b6aff", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:160)"}, "properties": {"repobilityId": "a66943840092017a", "scanner": "scanner-primary", "fingerprint": "355d6578ca2b6aff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-13cf705e9da1a26d", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:205)"}, "properties": {"repobilityId": "484601a9ccd7289c", "scanner": "scanner-primary", "fingerprint": "13cf705e9da1a26d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a8b674a119e020b4", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/health (packages/core/src/projects/health-routes.test.ts:266)"}, "properties": {"repobilityId": "978b3fe11fb3e1ab", "scanner": "scanner-primary", "fingerprint": "a8b674a119e020b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-796dd78dc9771a95", "level": "error", "message": {"text": "Dangling fetch: GET /api/invitations/missing-token (packages/core/src/projects/invitations-routes.test.ts:56)"}, "properties": {"repobilityId": "4577e751dbfb46bd", "scanner": "scanner-primary", "fingerprint": "796dd78dc9771a95", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-618750fe4af6e7a2", "level": "error", "message": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:71)"}, "properties": {"repobilityId": "b0ce0a48411557dc", "scanner": "scanner-primary", "fingerprint": "618750fe4af6e7a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-13710c019e88e596", "level": "error", "message": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:88)"}, "properties": {"repobilityId": "d74f2184dda87788", "scanner": "scanner-primary", "fingerprint": "13710c019e88e596", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c2ec00a539bae7ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/invitations/tok (packages/core/src/projects/invitations-routes.test.ts:105)"}, "properties": {"repobilityId": "eb8a50517f84e918", "scanner": "scanner-primary", "fingerprint": "c2ec00a539bae7ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8107070ae81dfb0d", "level": "error", "message": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:115)"}, "properties": {"repobilityId": "e51694860a56d425", "scanner": "scanner-primary", "fingerprint": "8107070ae81dfb0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a030b5b925217e77", "level": "error", "message": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:129)"}, "properties": {"repobilityId": "63ca9cb1306372ed", "scanner": "scanner-primary", "fingerprint": "a030b5b925217e77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8000c4204f9a4157", "level": "error", "message": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:146)"}, "properties": {"repobilityId": "421072bf89562a39", "scanner": "scanner-primary", "fingerprint": "8000c4204f9a4157", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5835a5928b6cbced", "level": "error", "message": {"text": "Dangling fetch: POST /api/invitations/tok/accept (packages/core/src/projects/invitations-routes.test.ts:160)"}, "properties": {"repobilityId": "f965402ca6126d89", "scanner": "scanner-primary", "fingerprint": "5835a5928b6cbced", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-719a4495d5336421", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:63)"}, "properties": {"repobilityId": "a1b523bf4878d1ea", "scanner": "scanner-primary", "fingerprint": "719a4495d5336421", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c756f307e8840ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:71)"}, "properties": {"repobilityId": "5de2ee1251ae6911", "scanner": "scanner-primary", "fingerprint": "9c756f307e8840ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a4bc962f2fde362d", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity (packages/core/src/issues/activity-routes.test.ts:82)"}, "properties": {"repobilityId": "2e170ac98f3b9566", "scanner": "scanner-primary", "fingerprint": "a4bc962f2fde362d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-31850072909c5ece", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=abc (packages/core/src/issues/activity-routes.test.ts:90)"}, "properties": {"repobilityId": "3a78e2044678eff5", "scanner": "scanner-primary", "fingerprint": "31850072909c5ece", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1c6c3ac33fda8375", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=2 (packages/core/src/issues/activity-routes.test.ts:116)"}, "properties": {"repobilityId": "23f5c85122a3d2dc", "scanner": "scanner-primary", "fingerprint": "1c6c3ac33fda8375", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7581b2963a59d7b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/activity?limit=50 (packages/core/src/issues/activity-routes.test.ts:146)"}, "properties": {"repobilityId": "4b4f2b2bb3280d4f", "scanner": "scanner-primary", "fingerprint": "7581b2963a59d7b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8e77fcf966c8464", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:156)"}, "properties": {"repobilityId": "13a60647f20f7ccf", "scanner": "scanner-primary", "fingerprint": "f8e77fcf966c8464", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d5921e914aae5e7", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity (packages/core/src/issues/activity-routes.test.ts:163)"}, "properties": {"repobilityId": "90be3097df82cc3e", "scanner": "scanner-primary", "fingerprint": "5d5921e914aae5e7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4a1e2b3df2fad020", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=bogus (packages/core/src/issues/activity-routes.test.ts:171)"}, "properties": {"repobilityId": "f6a9b9007eeb4612", "scanner": "scanner-primary", "fingerprint": "4a1e2b3df2fad020", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-34975399cf48fa65", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/activity?type=comment (packages/core/src/issues/activity-routes.test.ts:196)"}, "properties": {"repobilityId": "5e0acc9f346f8907", "scanner": "scanner-primary", "fingerprint": "34975399cf48fa65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fbd4b3d04a1e1a17", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/NOT-VALID (packages/core/src/issues/by-display.test.ts:72)"}, "properties": {"repobilityId": "ea2be8fca829348b", "scanner": "scanner-primary", "fingerprint": "fbd4b3d04a1e1a17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f17b8c6060aa8e6b", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-1 (packages/core/src/issues/by-display.test.ts:87)"}, "properties": {"repobilityId": "7df0667b53b36992", "scanner": "scanner-primary", "fingerprint": "f17b8c6060aa8e6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c886f377c7ec0094", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-999 (packages/core/src/issues/by-display.test.ts:104)"}, "properties": {"repobilityId": "c9caf105851ac1fb", "scanner": "scanner-primary", "fingerprint": "c886f377c7ec0094", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-191b9ee18d41cecd", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/by-display/ISS-7 (packages/core/src/issues/by-display.test.ts:138)"}, "properties": {"repobilityId": "385870930a371861", "scanner": "scanner-primary", "fingerprint": "191b9ee18d41cecd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb22d2919bd8eb9d", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/issues/search${qs} (packages/core/src/issues/search.test.ts:86)"}, "properties": {"repobilityId": "e1f363841c2ad9b5", "scanner": "scanner-primary", "fingerprint": "bb22d2919bd8eb9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ba9e3aeacf807c5d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:204)"}, "properties": {"repobilityId": "e8589d320bbd4833", "scanner": "scanner-primary", "fingerprint": "ba9e3aeacf807c5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2fa2781729569f17", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:214)"}, "properties": {"repobilityId": "df127e82e22b3559", "scanner": "scanner-primary", "fingerprint": "2fa2781729569f17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-371b899daced3046", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:224)"}, "properties": {"repobilityId": "fca7fe1e49de99f4", "scanner": "scanner-primary", "fingerprint": "371b899daced3046", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5bb6b86f3b3cd5a3", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:246)"}, "properties": {"repobilityId": "7d7b384670d2c4c9", "scanner": "scanner-primary", "fingerprint": "5bb6b86f3b3cd5a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-495964451844dfc8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:288)"}, "properties": {"repobilityId": "0ffca26ff3c9af73", "scanner": "scanner-primary", "fingerprint": "495964451844dfc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-892beea3f843cf69", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:339)"}, "properties": {"repobilityId": "ce3980e73ba1d726", "scanner": "scanner-primary", "fingerprint": "892beea3f843cf69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c0587e319fac88e", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/issues/batch (packages/core/src/issues/extras-routes-batch.test.ts:383)"}, "properties": {"repobilityId": "76b0c73acea9a4b8", "scanner": "scanner-primary", "fingerprint": "0c0587e319fac88e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-29e8543a61e424de", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/issues (packages/core/src/issues/create.test.ts:110)"}, "properties": {"repobilityId": "797749095a1b9084", "scanner": "scanner-primary", "fingerprint": "29e8543a61e424de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ec3a42eb86adaacf", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:150)"}, "properties": {"repobilityId": "185d3464d0b31134", "scanner": "scanner-primary", "fingerprint": "ec3a42eb86adaacf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4714ba290d9b5535", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:157)"}, "properties": {"repobilityId": "8d51e09d6c4120da", "scanner": "scanner-primary", "fingerprint": "4714ba290d9b5535", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a868351f10e13650", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:168)"}, "properties": {"repobilityId": "3cad0a97c894e553", "scanner": "scanner-primary", "fingerprint": "a868351f10e13650", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-09057460365591ad", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/enrich (packages/core/src/issues/extras-routes.test.ts:187)"}, "properties": {"repobilityId": "0858feea1602e4e5", "scanner": "scanner-primary", "fingerprint": "09057460365591ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e4bb7cbbee815d6d", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:224)"}, "properties": {"repobilityId": "ef9996c4342d1d99", "scanner": "scanner-primary", "fingerprint": "e4bb7cbbee815d6d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-17eb929d1a2d8355", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:252)"}, "properties": {"repobilityId": "1ef7ed6a9b27d86b", "scanner": "scanner-primary", "fingerprint": "17eb929d1a2d8355", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6eae57b5e04f2c6", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:279)"}, "properties": {"repobilityId": "e4a6911800452baf", "scanner": "scanner-primary", "fingerprint": "a6eae57b5e04f2c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f02d33a0cb2226d3", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/run-pipeline-step (packages/core/src/issues/extras-routes.test.ts:304)"}, "properties": {"repobilityId": "f037e419bf293c02", "scanner": "scanner-primary", "fingerprint": "f02d33a0cb2226d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b72647712e5f9b9d", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:319)"}, "properties": {"repobilityId": "22476bcd354d1d7c", "scanner": "scanner-primary", "fingerprint": "b72647712e5f9b9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bbc73d5041e99583", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/pipeline-timing (packages/core/src/issues/extras-routes.test.ts:325)"}, "properties": {"repobilityId": "c7368778ef3c7e6c", "scanner": "scanner-primary", "fingerprint": "bbc73d5041e99583", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7de21fb77ef981a2", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:334)"}, "properties": {"repobilityId": "7def4e7d0bb97a47", "scanner": "scanner-primary", "fingerprint": "7de21fb77ef981a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7fc58d8a185c06cc", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/pipeline-timing?projectId=${PROJECT_ID} (packages/core/src/issues/extras-routes.test.ts:360)"}, "properties": {"repobilityId": "a948eb74463e718e", "scanner": "scanner-primary", "fingerprint": "7fc58d8a185c06cc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-48d9fc78784f644c", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:130)"}, "properties": {"repobilityId": "b0106cb26a8908ce", "scanner": "scanner-primary", "fingerprint": "48d9fc78784f644c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa54485875f9b66f", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:139)"}, "properties": {"repobilityId": "e1b10a6174a783db", "scanner": "scanner-primary", "fingerprint": "aa54485875f9b66f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-16f2d62a31113ce1", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:150)"}, "properties": {"repobilityId": "946e125dd723d4d8", "scanner": "scanner-primary", "fingerprint": "16f2d62a31113ce1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bd2f6c764f8e9ca0", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:168)"}, "properties": {"repobilityId": "97c9dff75f26e539", "scanner": "scanner-primary", "fingerprint": "bd2f6c764f8e9ca0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-74508dcda2a01879", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:188)"}, "properties": {"repobilityId": "0d3d4057e610b6a8", "scanner": "scanner-primary", "fingerprint": "74508dcda2a01879", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f033274cdc95a931", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:217)"}, "properties": {"repobilityId": "62ede4f7a16f00a2", "scanner": "scanner-primary", "fingerprint": "f033274cdc95a931", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2aeb881597699215", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:257)"}, "properties": {"repobilityId": "72c0d4abbd7d481d", "scanner": "scanner-primary", "fingerprint": "2aeb881597699215", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6e855a183810e6bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:293)"}, "properties": {"repobilityId": "0a65713a877b74ee", "scanner": "scanner-primary", "fingerprint": "6e855a183810e6bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-35befa1829b9bc04", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:307)"}, "properties": {"repobilityId": "618c2a3e73616edb", "scanner": "scanner-primary", "fingerprint": "35befa1829b9bc04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b9a9d1d7dd2b97e", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/attachments (packages/core/src/issues/attachment-routes.test.ts:336)"}, "properties": {"repobilityId": "9f00a0981046b9d7", "scanner": "scanner-primary", "fingerprint": "2b9a9d1d7dd2b97e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d76986afb66b100a", "level": "error", "message": {"text": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:364)"}, "properties": {"repobilityId": "a67c15e7437d2bfb", "scanner": "scanner-primary", "fingerprint": "d76986afb66b100a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-97cc4a92f9d68bcb", "level": "error", "message": {"text": "Dangling fetch: GET /api/attachments/${ATT_ID}/download (packages/core/src/issues/attachment-routes.test.ts:391)"}, "properties": {"repobilityId": "93850d397e964b4b", "scanner": "scanner-primary", "fingerprint": "97cc4a92f9d68bcb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-817f73f3d88f5172", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/transition (packages/core/src/issues/transition.test.ts:105)"}, "properties": {"repobilityId": "7630d4cf0989760b", "scanner": "scanner-primary", "fingerprint": "817f73f3d88f5172", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1a621444b318ec7c", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:90)"}, "properties": {"repobilityId": "918bd0bea900dbfa", "scanner": "scanner-primary", "fingerprint": "1a621444b318ec7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3d7df3b00ccc99d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/sessions?projectId=${PROJECT_ID} (packages/core/src/chat/sessions-routes.test.ts:101)"}, "properties": {"repobilityId": "e21223e0766c550b", "scanner": "scanner-primary", "fingerprint": "3d7df3b00ccc99d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ba69842ddfdc128b", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat/sessions (packages/core/src/chat/sessions-routes.test.ts:117)"}, "properties": {"repobilityId": "4a9c73df5a6cb878", "scanner": "scanner-primary", "fingerprint": "ba69842ddfdc128b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-964c259dacbfdd37", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:132)"}, "properties": {"repobilityId": "6b1c2a86f17aa36b", "scanner": "scanner-primary", "fingerprint": "964c259dacbfdd37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-32b264a7983f8e42", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:141)"}, "properties": {"repobilityId": "5d114bcfa5153610", "scanner": "scanner-primary", "fingerprint": "32b264a7983f8e42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33fede2a2f882c97", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/chat/sessions/${SESSION_ID} (packages/core/src/chat/sessions-routes.test.ts:152)"}, "properties": {"repobilityId": "89a59aa98fd90dae", "scanner": "scanner-primary", "fingerprint": "33fede2a2f882c97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-34ab3a50bcbca49d", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:183)"}, "properties": {"repobilityId": "78fcdb85832c38c0", "scanner": "scanner-primary", "fingerprint": "34ab3a50bcbca49d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3b21373b54cbfad8", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:194)"}, "properties": {"repobilityId": "6d9d4373241499fa", "scanner": "scanner-primary", "fingerprint": "3b21373b54cbfad8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e8cf4eface21292", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:204)"}, "properties": {"repobilityId": "21816a7eabde6208", "scanner": "scanner-primary", "fingerprint": "7e8cf4eface21292", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7a1277ae2864466e", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:232)"}, "properties": {"repobilityId": "b215ad185d72df58", "scanner": "scanner-primary", "fingerprint": "7a1277ae2864466e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f87e1e6ecce8150", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:302)"}, "properties": {"repobilityId": "564e8fa7b701fecf", "scanner": "scanner-primary", "fingerprint": "5f87e1e6ecce8150", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b4d3658b52b5b600", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:345)"}, "properties": {"repobilityId": "b457763800c99f7a", "scanner": "scanner-primary", "fingerprint": "b4d3658b52b5b600", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-206f10987e5d3d27", "level": "error", "message": {"text": "Dangling fetch: POST /api/chat (packages/core/src/chat/routes.test.ts:373)"}, "properties": {"repobilityId": "c6d5f23e84824fde", "scanner": "scanner-primary", "fingerprint": "206f10987e5d3d27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-08f922f18175ca65", "level": "error", "message": {"text": "Dangling fetch: GET /api/knowledge-edges?projectId=${PROJECT_ID} (packages/core/src/knowledge-edges/routes.test.ts:76)"}, "properties": {"repobilityId": "e302e59ed0cc8e68", "scanner": "scanner-primary", "fingerprint": "08f922f18175ca65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f61ecfb58733e929", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:89)"}, "properties": {"repobilityId": "9223eaadabcf286b", "scanner": "scanner-primary", "fingerprint": "f61ecfb58733e929", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e715cfac5e0df849", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:104)"}, "properties": {"repobilityId": "c92d7c42b2a987f5", "scanner": "scanner-primary", "fingerprint": "e715cfac5e0df849", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-230b827011fa8fbf", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge-edges (packages/core/src/knowledge-edges/routes.test.ts:118)"}, "properties": {"repobilityId": "a3fa589f1bdd6364", "scanner": "scanner-primary", "fingerprint": "230b827011fa8fbf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d6caac19ac023cbc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:132)"}, "properties": {"repobilityId": "5c268954edf5ba4c", "scanner": "scanner-primary", "fingerprint": "d6caac19ac023cbc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-423f3f776fdec4b9", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/knowledge-edges/${EDGE_ID} (packages/core/src/knowledge-edges/routes.test.ts:144)"}, "properties": {"repobilityId": "b881237baae16783", "scanner": "scanner-primary", "fingerprint": "423f3f776fdec4b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c36b6fda84890f62", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:88)"}, "properties": {"repobilityId": "0c6f35f0854ac35b", "scanner": "scanner-primary", "fingerprint": "c36b6fda84890f62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4203bf1a27fb6ead", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:98)"}, "properties": {"repobilityId": "72819fbc3deb7bb9", "scanner": "scanner-primary", "fingerprint": "4203bf1a27fb6ead", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-09438a7c33af8d7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:109)"}, "properties": {"repobilityId": "19edab4219f9a2e6", "scanner": "scanner-primary", "fingerprint": "09438a7c33af8d7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b7f7d5981e4406bd", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:121)"}, "properties": {"repobilityId": "1d9b10bb991afe43", "scanner": "scanner-primary", "fingerprint": "b7f7d5981e4406bd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-caf0cfdd01855640", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:144)"}, "properties": {"repobilityId": "43ddf58c629075ef", "scanner": "scanner-primary", "fingerprint": "caf0cfdd01855640", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5fef4c1690232b11", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:166)"}, "properties": {"repobilityId": "d5071b85a8eb3faa", "scanner": "scanner-primary", "fingerprint": "5fef4c1690232b11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9b050920018587a5", "level": "error", "message": {"text": "Dangling fetch: GET /api/issues/${ISSUE_ID}/tasks (packages/core/src/tasks/routes.test.ts:185)"}, "properties": {"repobilityId": "e0cd1d999828d732", "scanner": "scanner-primary", "fingerprint": "9b050920018587a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f4798c08e9f98f6c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:210)"}, "properties": {"repobilityId": "e880e88fcc5f125c", "scanner": "scanner-primary", "fingerprint": "f4798c08e9f98f6c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-adac272adce8683f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:227)"}, "properties": {"repobilityId": "d06b249d8d668ca6", "scanner": "scanner-primary", "fingerprint": "adac272adce8683f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f9cf416d2ac899fb", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/tasks/${TASK_ID} (packages/core/src/tasks/routes.test.ts:247)"}, "properties": {"repobilityId": "eab283451f88ba28", "scanner": "scanner-primary", "fingerprint": "f9cf416d2ac899fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-302731d21fb13153", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:267)"}, "properties": {"repobilityId": "45685e983ce59b38", "scanner": "scanner-primary", "fingerprint": "302731d21fb13153", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ef1107decf7f1982", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:284)"}, "properties": {"repobilityId": "9fc312b2f497509f", "scanner": "scanner-primary", "fingerprint": "ef1107decf7f1982", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-86f9e2ef17d3049a", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:301)"}, "properties": {"repobilityId": "1ecf003b6f4e3c66", "scanner": "scanner-primary", "fingerprint": "86f9e2ef17d3049a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fb1e9f80cc96b8b5", "level": "error", "message": {"text": "Dangling fetch: POST /api/issues/${ISSUE_ID}/tasks/reorder (packages/core/src/tasks/routes.test.ts:324)"}, "properties": {"repobilityId": "89b29ddcae889348", "scanner": "scanner-primary", "fingerprint": "fb1e9f80cc96b8b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-14e1ac6d4e4e032c", "level": "error", "message": {"text": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:78)"}, "properties": {"repobilityId": "b95cf320e17c6438", "scanner": "scanner-primary", "fingerprint": "14e1ac6d4e4e032c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f561c2fb7f44b35", "level": "error", "message": {"text": "Dangling fetch: GET /api/domain-templates (packages/core/src/domain-templates/routes.test.ts:88)"}, "properties": {"repobilityId": "bf75c6a9b267849e", "scanner": "scanner-primary", "fingerprint": "7f561c2fb7f44b35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8222fa3e241b3d6", "level": "error", "message": {"text": "Dangling fetch: GET /api/domain-templates/missing (packages/core/src/domain-templates/routes.test.ts:101)"}, "properties": {"repobilityId": "6eecac90cf796772", "scanner": "scanner-primary", "fingerprint": "f8222fa3e241b3d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf96ca6a7dcf7b15", "level": "error", "message": {"text": "Dangling fetch: GET /api/domain-templates/hrm (packages/core/src/domain-templates/routes.test.ts:110)"}, "properties": {"repobilityId": "a1328b692b5be3b4", "scanner": "scanner-primary", "fingerprint": "cf96ca6a7dcf7b15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2845380d573722d7", "level": "error", "message": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:128)"}, "properties": {"repobilityId": "3ebf2bb992c4de57", "scanner": "scanner-primary", "fingerprint": "2845380d573722d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f5891f9ca73b5f0", "level": "error", "message": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:141)"}, "properties": {"repobilityId": "bea2201cfd5ef198", "scanner": "scanner-primary", "fingerprint": "5f5891f9ca73b5f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6e9f8d2849c2774e", "level": "error", "message": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:153)"}, "properties": {"repobilityId": "b5a86960352da6a6", "scanner": "scanner-primary", "fingerprint": "6e9f8d2849c2774e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a86e390851340ba", "level": "error", "message": {"text": "Dangling fetch: POST /api/domain-templates/apply (packages/core/src/domain-templates/routes.test.ts:163)"}, "properties": {"repobilityId": "202cb5b76de707ec", "scanner": "scanner-primary", "fingerprint": "8a86e390851340ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1938bd1829c4819a", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions?projectId=${PROJECT_ID} (packages/core/src/agent-sessions/routes.test.ts:182)"}, "properties": {"repobilityId": "2545d2cfc6cf7478", "scanner": "scanner-primary", "fingerprint": "1938bd1829c4819a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6911c79784c53cd0", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions (packages/core/src/agent-sessions/routes.test.ts:197)"}, "properties": {"repobilityId": "7787b1a5f5c5ce00", "scanner": "scanner-primary", "fingerprint": "6911c79784c53cd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c2e522314105634", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/start (packages/core/src/agent-sessions/routes.test.ts:225)"}, "properties": {"repobilityId": "385a5864a55be077", "scanner": "scanner-primary", "fingerprint": "0c2e522314105634", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-412936634782fd5c", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:251)"}, "properties": {"repobilityId": "bad0acca591f5c80", "scanner": "scanner-primary", "fingerprint": "412936634782fd5c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-46287820f0356427", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:272)"}, "properties": {"repobilityId": "5004afd689c4f5f2", "scanner": "scanner-primary", "fingerprint": "46287820f0356427", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5336810a1da9a62d", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:312)"}, "properties": {"repobilityId": "4dc66d10892f2fcc", "scanner": "scanner-primary", "fingerprint": "5336810a1da9a62d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dd7b85b72bd410ff", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:349)"}, "properties": {"repobilityId": "91954e80586fdb9a", "scanner": "scanner-primary", "fingerprint": "dd7b85b72bd410ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-27474af8ab4efbca", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/pipeline-control (packages/core/src/agent-sessions/routes.test.ts:367)"}, "properties": {"repobilityId": "1cd904736cfcd2e5", "scanner": "scanner-primary", "fingerprint": "27474af8ab4efbca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-861708bbb197babb", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:393)"}, "properties": {"repobilityId": "fab7f445f80289b7", "scanner": "scanner-primary", "fingerprint": "861708bbb197babb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e198244751c9b50b", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:415)"}, "properties": {"repobilityId": "587be08797870398", "scanner": "scanner-primary", "fingerprint": "e198244751c9b50b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0b0dd422fdbab16f", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:427)"}, "properties": {"repobilityId": "14eeb0d2cd205a3b", "scanner": "scanner-primary", "fingerprint": "0b0dd422fdbab16f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c5f2b824d9c8039", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:453)"}, "properties": {"repobilityId": "790d41a9490a0974", "scanner": "scanner-primary", "fingerprint": "9c5f2b824d9c8039", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e9e6efb83f5511ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/agent-sessions/${SESSION_ID}/pipeline-health (packages/core/src/agent-sessions/routes.test.ts:468)"}, "properties": {"repobilityId": "ea76e242c7cdcc31", "scanner": "scanner-primary", "fingerprint": "e9e6efb83f5511ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-10bad476c13ed3b3", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/${SESSION_ID}/relay (packages/core/src/agent-sessions/routes.test.ts:486)"}, "properties": {"repobilityId": "780ac0a6f977dec6", "scanner": "scanner-primary", "fingerprint": "10bad476c13ed3b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9e5185c5a951b042", "level": "error", "message": {"text": "Dangling fetch: POST /api/agent-sessions/desktop/status (packages/core/src/agent-sessions/routes.test.ts:507)"}, "properties": {"repobilityId": "b1bcd7a2554008fa", "scanner": "scanner-primary", "fingerprint": "9e5185c5a951b042", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5fa6d15f312214c5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:523)"}, "properties": {"repobilityId": "6f32a0af60f8cbc9", "scanner": "scanner-primary", "fingerprint": "5fa6d15f312214c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c5ef82a39c499cb7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:544)"}, "properties": {"repobilityId": "0956d23275e63af1", "scanner": "scanner-primary", "fingerprint": "c5ef82a39c499cb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-17890e4ac7973bcd", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agent-sessions/${SESSION_ID} (packages/core/src/agent-sessions/routes.test.ts:564)"}, "properties": {"repobilityId": "fe0f8978da4acd92", "scanner": "scanner-primary", "fingerprint": "17890e4ac7973bcd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f662cf4b5f01ef09", "level": "error", "message": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:89)"}, "properties": {"repobilityId": "8f5a228c37700ac1", "scanner": "scanner-primary", "fingerprint": "f662cf4b5f01ef09", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a066fd320ea0e107", "level": "error", "message": {"text": "Dangling fetch: GET /api/agents (packages/core/src/agents/routes.test.ts:95)"}, "properties": {"repobilityId": "54262793a4e16b86", "scanner": "scanner-primary", "fingerprint": "a066fd320ea0e107", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a5af32ef184fa35", "level": "error", "message": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:108)"}, "properties": {"repobilityId": "29d0551d36b7577d", "scanner": "scanner-primary", "fingerprint": "5a5af32ef184fa35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c7d324646e250470", "level": "error", "message": {"text": "Dangling fetch: GET /api/agents?projectId=${PROJECT_ID} (packages/core/src/agents/routes.test.ts:119)"}, "properties": {"repobilityId": "6a62f4e85118baa1", "scanner": "scanner-primary", "fingerprint": "c7d324646e250470", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dbf4a6f1fb04dc98", "level": "error", "message": {"text": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:133)"}, "properties": {"repobilityId": "db407c47857fe01b", "scanner": "scanner-primary", "fingerprint": "dbf4a6f1fb04dc98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eea41604e65baaab", "level": "error", "message": {"text": "Dangling fetch: POST /api/agents (packages/core/src/agents/routes.test.ts:143)"}, "properties": {"repobilityId": "51a76903f9c3a540", "scanner": "scanner-primary", "fingerprint": "eea41604e65baaab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3abaf304d58dad9d", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:162)"}, "properties": {"repobilityId": "5ea76f7b7ae40eb7", "scanner": "scanner-primary", "fingerprint": "3abaf304d58dad9d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8ec900af0f5d3ba8", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:175)"}, "properties": {"repobilityId": "dc699fc4105d1038", "scanner": "scanner-primary", "fingerprint": "8ec900af0f5d3ba8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-623bbcff625b45c2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:189)"}, "properties": {"repobilityId": "523af4a42affccd1", "scanner": "scanner-primary", "fingerprint": "623bbcff625b45c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eeea9d12c5dcd460", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/agents/${AGENT_ID} (packages/core/src/agents/routes.test.ts:200)"}, "properties": {"repobilityId": "5e66a083eed6bea9", "scanner": "scanner-primary", "fingerprint": "eeea9d12c5dcd460", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e92109c7a2a6b3e", "level": "error", "message": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:64)"}, "properties": {"repobilityId": "10e409e9bf7cc00e", "scanner": "scanner-primary", "fingerprint": "7e92109c7a2a6b3e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-96f1d5c7342843c6", "level": "error", "message": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:75)"}, "properties": {"repobilityId": "c70c8ca6fb6ab0c5", "scanner": "scanner-primary", "fingerprint": "96f1d5c7342843c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a4b9f608a8a9e056", "level": "error", "message": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:142)"}, "properties": {"repobilityId": "de2472df1cdf5034", "scanner": "scanner-primary", "fingerprint": "a4b9f608a8a9e056", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b655e1d6748e947f", "level": "error", "message": {"text": "Dangling fetch: GET /api/me/attention (packages/core/src/me/attention-routes.test.ts:198)"}, "properties": {"repobilityId": "6a0461c32b3d9e42", "scanner": "scanner-primary", "fingerprint": "b655e1d6748e947f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-286a081aa99afdd2", "level": "error", "message": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:150)"}, "properties": {"repobilityId": "1a32773f876590e8", "scanner": "scanner-primary", "fingerprint": "286a081aa99afdd2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-62bff60b9fe4f559", "level": "error", "message": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:164)"}, "properties": {"repobilityId": "3f7d1bde71c2a24c", "scanner": "scanner-primary", "fingerprint": "62bff60b9fe4f559", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-da2f7f5e28f1b8c1", "level": "error", "message": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:176)"}, "properties": {"repobilityId": "db9d5446553e4ba2", "scanner": "scanner-primary", "fingerprint": "da2f7f5e28f1b8c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-66764f28565c1204", "level": "error", "message": {"text": "Dangling fetch: GET /api/pipeline-runs/not-a-uuid (packages/core/src/pipeline/runs-read-routes.test.ts:185)"}, "properties": {"repobilityId": "1d6144cec4f17d7c", "scanner": "scanner-primary", "fingerprint": "66764f28565c1204", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3e1e8a0b814b4aca", "level": "error", "message": {"text": "Dangling fetch: GET /api/pipeline-runs/${RUN_ID} (packages/core/src/pipeline/runs-read-routes.test.ts:192)"}, "properties": {"repobilityId": "4e4a4b2709d3a40c", "scanner": "scanner-primary", "fingerprint": "3e1e8a0b814b4aca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a742e71aee5ca218", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?limit=10&offset=0 (packages/core/src/pipeline/runs-read-routes.test.ts:230)"}, "properties": {"repobilityId": "ba56404f6687a8f8", "scanner": "scanner-primary", "fingerprint": "a742e71aee5ca218", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2716cb8bf3110770", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs (packages/core/src/pipeline/runs-read-routes.test.ts:252)"}, "properties": {"repobilityId": "eb65b57d18e2635a", "scanner": "scanner-primary", "fingerprint": "2716cb8bf3110770", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6d9e613520cb0d15", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/pipeline-runs?status=bogus (packages/core/src/pipeline/runs-read-routes.test.ts:261)"}, "properties": {"repobilityId": "5f5a513f08b85a0a", "scanner": "scanner-primary", "fingerprint": "6d9e613520cb0d15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3b131bb17b204fd5", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:113)"}, "properties": {"repobilityId": "7fa748a05d3c1b04", "scanner": "scanner-primary", "fingerprint": "3b131bb17b204fd5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-56e4068cc69050a1", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:127)"}, "properties": {"repobilityId": "f6b872237a16437c", "scanner": "scanner-primary", "fingerprint": "56e4068cc69050a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-78ad6da304072ed8", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/pause (packages/core/src/pipeline/runs-routes.test.ts:140)"}, "properties": {"repobilityId": "dd507870b27b7273", "scanner": "scanner-primary", "fingerprint": "78ad6da304072ed8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b37a5fbfc5abf285", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/not-a-uuid/pause (packages/core/src/pipeline/runs-routes.test.ts:151)"}, "properties": {"repobilityId": "a842c3a9325d3c71", "scanner": "scanner-primary", "fingerprint": "b37a5fbfc5abf285", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-40104a16c2f0d424", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:166)"}, "properties": {"repobilityId": "2b8ae0abb4e5225b", "scanner": "scanner-primary", "fingerprint": "40104a16c2f0d424", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-69dad855c42fe98f", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/resume (packages/core/src/pipeline/runs-routes.test.ts:182)"}, "properties": {"repobilityId": "f70930f01df9512a", "scanner": "scanner-primary", "fingerprint": "69dad855c42fe98f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3400bf863c519992", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:202)"}, "properties": {"repobilityId": "8aac7654dbfe9311", "scanner": "scanner-primary", "fingerprint": "3400bf863c519992", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9820bca89f8f0842", "level": "error", "message": {"text": "Dangling fetch: POST /api/pipeline-runs/${RUN_ID}/cancel (packages/core/src/pipeline/runs-routes.test.ts:218)"}, "properties": {"repobilityId": "e2daf6bc35a47b2f", "scanner": "scanner-primary", "fingerprint": "9820bca89f8f0842", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0fbfe33cd02bd75d", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:92)"}, "properties": {"repobilityId": "e3a07e7eb6f42960", "scanner": "scanner-primary", "fingerprint": "0fbfe33cd02bd75d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2d64913881568116", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat-logs (packages/core/src/chat-logs/routes.test.ts:110)"}, "properties": {"repobilityId": "7e611934e0dd5c74", "scanner": "scanner-primary", "fingerprint": "2d64913881568116", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ce037869b83d1be2", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat-logs?projectSlug=${SLUG} (packages/core/src/chat-logs/routes.test.ts:123)"}, "properties": {"repobilityId": "c569d4d35c947ebb", "scanner": "scanner-primary", "fingerprint": "ce037869b83d1be2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e329879bef31a593", "level": "error", "message": {"text": "Dangling fetch: GET /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:137)"}, "properties": {"repobilityId": "017df5abc1e93765", "scanner": "scanner-primary", "fingerprint": "e329879bef31a593", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b948614297a1ba4", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:153)"}, "properties": {"repobilityId": "7b3ff9bf6db4d40d", "scanner": "scanner-primary", "fingerprint": "2b948614297a1ba4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c94334fd71fb3c06", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/chat-logs/${LOG_ID} (packages/core/src/chat-logs/routes.test.ts:168)"}, "properties": {"repobilityId": "ac3419cac078baa3", "scanner": "scanner-primary", "fingerprint": "c94334fd71fb3c06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26274f2640fa260c", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/not-a-uuid/metrics/timeseries?metric=cost (packages/core/src/metrics/routes.test.ts:87)"}, "properties": {"repobilityId": "fdc595bb21d7230c", "scanner": "scanner-primary", "fingerprint": "26274f2640fa260c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b192d92c383d9dd8", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:87)"}, "properties": {"repobilityId": "81e2444ae83290f2", "scanner": "scanner-primary", "fingerprint": "b192d92c383d9dd8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-81eb06f11243526b", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:103)"}, "properties": {"repobilityId": "f9f759c3aa901ad2", "scanner": "scanner-primary", "fingerprint": "81eb06f11243526b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5161780cbd54620c", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:121)"}, "properties": {"repobilityId": "cdd31e57aa86b780", "scanner": "scanner-primary", "fingerprint": "5161780cbd54620c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f00b3e445fc403e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:139)"}, "properties": {"repobilityId": "b055166985f4e316", "scanner": "scanner-primary", "fingerprint": "f00b3e445fc403e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eed4454452928c1f", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:168)"}, "properties": {"repobilityId": "4f231bcf2cecba81", "scanner": "scanner-primary", "fingerprint": "eed4454452928c1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2546adfb70a4b5a6", "level": "error", "message": {"text": "Dangling fetch: PUT /api/schedules/${SCHEDULE_ID} (packages/core/src/schedules/routes.test.ts:195)"}, "properties": {"repobilityId": "2a13e61cf57726c1", "scanner": "scanner-primary", "fingerprint": "2546adfb70a4b5a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fcbed1819d050a64", "level": "error", "message": {"text": "Dangling fetch: GET /api/schedules?projectId=${PROJECT_ID} (packages/core/src/schedules/routes.test.ts:213)"}, "properties": {"repobilityId": "3fd916db1041bb84", "scanner": "scanner-primary", "fingerprint": "fcbed1819d050a64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2fcd57926ff45b7f", "level": "error", "message": {"text": "Dangling fetch: GET /api/schedules (packages/core/src/schedules/routes.test.ts:223)"}, "properties": {"repobilityId": "438cb40b43198ed3", "scanner": "scanner-primary", "fingerprint": "2fcd57926ff45b7f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7ab200e07b394e54", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:254)"}, "properties": {"repobilityId": "128627c4412a1a5c", "scanner": "scanner-primary", "fingerprint": "7ab200e07b394e54", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d15f49955058e901", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:285)"}, "properties": {"repobilityId": "2e7a43a7cec31f5c", "scanner": "scanner-primary", "fingerprint": "d15f49955058e901", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-71c861bf6e2c6e45", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:320)"}, "properties": {"repobilityId": "f2e49cc1c2c7194f", "scanner": "scanner-primary", "fingerprint": "71c861bf6e2c6e45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e8787f02ac4e3354", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:345)"}, "properties": {"repobilityId": "3c1393d31f0942bd", "scanner": "scanner-primary", "fingerprint": "e8787f02ac4e3354", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26dbfc25498e4771", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules/${SCHEDULE_ID}/run (packages/core/src/schedules/routes.test.ts:373)"}, "properties": {"repobilityId": "b05d146ddd7ac42c", "scanner": "scanner-primary", "fingerprint": "26dbfc25498e4771", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fc3916e75b4545d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:396)"}, "properties": {"repobilityId": "82d44c7211eb5efa", "scanner": "scanner-primary", "fingerprint": "fc3916e75b4545d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d1a8f39c309266b5", "level": "error", "message": {"text": "Dangling fetch: POST /api/schedules (packages/core/src/schedules/routes.test.ts:416)"}, "properties": {"repobilityId": "cfb157150ed0385b", "scanner": "scanner-primary", "fingerprint": "d1a8f39c309266b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2449d374a0a6fe35", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:79)"}, "properties": {"repobilityId": "f8658f1bd35c3de5", "scanner": "scanner-primary", "fingerprint": "2449d374a0a6fe35", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-68007e9313986087", "level": "error", "message": {"text": "Dangling fetch: GET /api/projects/${PROJECT_ID}/skills/effective (packages/core/src/skills/studio-routes.test.ts:98)"}, "properties": {"repobilityId": "e7c98416677b2a15", "scanner": "scanner-primary", "fingerprint": "68007e9313986087", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3f66c2955cf263bb", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:140)"}, "properties": {"repobilityId": "a5b49e2d161fbaba", "scanner": "scanner-primary", "fingerprint": "3f66c2955cf263bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-277c4a6821f04683", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:160)"}, "properties": {"repobilityId": "3b57e0f3931336f8", "scanner": "scanner-primary", "fingerprint": "277c4a6821f04683", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-effbd00e17c821ea", "level": "error", "message": {"text": "Dangling fetch: POST /api/projects/${PROJECT_ID}/skills/apply-default (packages/core/src/skills/studio-routes.test.ts:175)"}, "properties": {"repobilityId": "b99e1ec642261849", "scanner": "scanner-primary", "fingerprint": "effbd00e17c821ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e7011162debc02c", "level": "error", "message": {"text": "Dangling fetch: GET /api/skills?scope=global (packages/core/src/skills/crud-routes.test.ts:82)"}, "properties": {"repobilityId": "5a1d9005e2fb15c0", "scanner": "scanner-primary", "fingerprint": "1e7011162debc02c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1fd79c9fd70ce4ba", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:94)"}, "properties": {"repobilityId": "a38e82c34bace624", "scanner": "scanner-primary", "fingerprint": "1fd79c9fd70ce4ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a6162adb615d410", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:106)"}, "properties": {"repobilityId": "1f447fa22ca23b74", "scanner": "scanner-primary", "fingerprint": "8a6162adb615d410", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-039f15a6934e8c7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:134)"}, "properties": {"repobilityId": "accf9c44edee58e5", "scanner": "scanner-primary", "fingerprint": "039f15a6934e8c7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dd3263742424be7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills (packages/core/src/skills/crud-routes.test.ts:170)"}, "properties": {"repobilityId": "041b66b2dd50d954", "scanner": "scanner-primary", "fingerprint": "dd3263742424be7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a7926eb086699a78", "level": "error", "message": {"text": "Dangling fetch: PUT /api/skills/${SKILL_ID} (packages/core/src/skills/crud-routes.test.ts:211)"}, "properties": {"repobilityId": "99fe26e7c4250b24", "scanner": "scanner-primary", "fingerprint": "a7926eb086699a78", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f48591e4dbebbe24", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:233)"}, "properties": {"repobilityId": "5289a849c2aad405", "scanner": "scanner-primary", "fingerprint": "f48591e4dbebbe24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-457aba01fb1d1acb", "level": "error", "message": {"text": "Dangling fetch: POST /api/skills/bulk-push (packages/core/src/skills/crud-routes.test.ts:246)"}, "properties": {"repobilityId": "8bb1eb0fbd91e11b", "scanner": "scanner-primary", "fingerprint": "457aba01fb1d1acb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a5e25d37f96801fb", "level": "error", "message": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:74)"}, "properties": {"repobilityId": "3b890d0b7a9eb201", "scanner": "scanner-primary", "fingerprint": "a5e25d37f96801fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6747ee6fe28d434d", "level": "error", "message": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:82)"}, "properties": {"repobilityId": "0541958cec68ef23", "scanner": "scanner-primary", "fingerprint": "6747ee6fe28d434d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7ab1393b2db33a12", "level": "error", "message": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:95)"}, "properties": {"repobilityId": "5b28a401c8f5caa9", "scanner": "scanner-primary", "fingerprint": "7ab1393b2db33a12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-18314a51e889c5c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:106)"}, "properties": {"repobilityId": "692df6987ee71e8d", "scanner": "scanner-primary", "fingerprint": "18314a51e889c5c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0bf864afc4d9c505", "level": "error", "message": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:120)"}, "properties": {"repobilityId": "2d86fdf4370cd39a", "scanner": "scanner-primary", "fingerprint": "0bf864afc4d9c505", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-267822063b5ff408", "level": "error", "message": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:132)"}, "properties": {"repobilityId": "5a7c19098ea913a6", "scanner": "scanner-primary", "fingerprint": "267822063b5ff408", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bf1b41dc6fcf8daa", "level": "error", "message": {"text": "Dangling fetch: PUT /api/app-config/${PROJECT_ID} (packages/core/src/app-config/routes.test.ts:143)"}, "properties": {"repobilityId": "5505679965def28e", "scanner": "scanner-primary", "fingerprint": "bf1b41dc6fcf8daa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a5e03e48fd93f161", "level": "error", "message": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:74)"}, "properties": {"repobilityId": "fbd9f1bbd484308d", "scanner": "scanner-primary", "fingerprint": "a5e03e48fd93f161", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-23b64bb5c4c3b4a0", "level": "error", "message": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:81)"}, "properties": {"repobilityId": "6b0754245c60bc31", "scanner": "scanner-primary", "fingerprint": "23b64bb5c4c3b4a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-64ed1c320256be20", "level": "error", "message": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:90)"}, "properties": {"repobilityId": "b96fd06f177bbe5e", "scanner": "scanner-primary", "fingerprint": "64ed1c320256be20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1942cefce5f9f469", "level": "error", "message": {"text": "Dangling fetch: GET /api/devices/me/skills?projectId=${PROJECT_ID} (packages/core/src/devices/skills-routes.test.ts:99)"}, "properties": {"repobilityId": "957def03099847b9", "scanner": "scanner-primary", "fingerprint": "1942cefce5f9f469", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c26cec526285e389", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:97)"}, "properties": {"repobilityId": "1bf76051bc85bbec", "scanner": "scanner-primary", "fingerprint": "c26cec526285e389", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-93ad29427da816bb", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:121)"}, "properties": {"repobilityId": "5015372ccee90418", "scanner": "scanner-primary", "fingerprint": "93ad29427da816bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b9635638c81a0192", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:149)"}, "properties": {"repobilityId": "740e622083dadfb8", "scanner": "scanner-primary", "fingerprint": "b9635638c81a0192", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-71c5b6ae2c95c686", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:179)"}, "properties": {"repobilityId": "2b4426efba031f0a", "scanner": "scanner-primary", "fingerprint": "71c5b6ae2c95c686", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e8caa4cf6f7d605d", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:190)"}, "properties": {"repobilityId": "51b13db1e0431f7e", "scanner": "scanner-primary", "fingerprint": "e8caa4cf6f7d605d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4eba4b38094a966e", "level": "error", "message": {"text": "Dangling fetch: POST /api/comments/${COMMENT_ID}/attachments (packages/core/src/comments/upload.test.ts:203)"}, "properties": {"repobilityId": "65cefa4e7334f0e2", "scanner": "scanner-primary", "fingerprint": "4eba4b38094a966e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c0b8ab1c7541f3ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:65)"}, "properties": {"repobilityId": "569fd25ad48d604d", "scanner": "scanner-primary", "fingerprint": "c0b8ab1c7541f3ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-82b7f1a4821549a4", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:75)"}, "properties": {"repobilityId": "d30cec23726ac636", "scanner": "scanner-primary", "fingerprint": "82b7f1a4821549a4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-04345dc10198fac0", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:90)"}, "properties": {"repobilityId": "bb102c8d1b6dccd7", "scanner": "scanner-primary", "fingerprint": "04345dc10198fac0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d8a84b8a5cf7059b", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:101)"}, "properties": {"repobilityId": "864c35df4075b171", "scanner": "scanner-primary", "fingerprint": "d8a84b8a5cf7059b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-77fefc4edec0ca8b", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:116)"}, "properties": {"repobilityId": "2ce23da064907b9d", "scanner": "scanner-primary", "fingerprint": "77fefc4edec0ca8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-49e6da2e96687034", "level": "error", "message": {"text": "Dangling fetch: POST /api/knowledge/ingest (packages/core/src/knowledge/ingest-routes.test.ts:144)"}, "properties": {"repobilityId": "5994c6c5ee6f5b3a", "scanner": "scanner-primary", "fingerprint": "49e6da2e96687034", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b8073f7bf758f6d0", "level": "note", "message": {"text": "Unused endpoint: USE /api/*"}, "properties": {"repobilityId": "5ad723c3e64fdf51", "scanner": "scanner-primary", "fingerprint": "b8073f7bf758f6d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-95e266019920938e", "level": "note", "message": {"text": "Unused endpoint: USE /mcp"}, "properties": {"repobilityId": "7bba60b04d5abdaf", "scanner": "scanner-primary", "fingerprint": "95e266019920938e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-239a938869adf673", "level": "note", "message": {"text": "Unused endpoint: POST /mcp"}, "properties": {"repobilityId": "ee8e01d9a42dcd15", "scanner": "scanner-primary", "fingerprint": "239a938869adf673", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc1d680cdc3d6aa1", "level": "note", "message": {"text": "Unused endpoint: GET /mcp"}, "properties": {"repobilityId": "ce50d66114929951", "scanner": "scanner-primary", "fingerprint": "cc1d680cdc3d6aa1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56b4efafa0127feb", "level": "note", "message": {"text": "Unused endpoint: DELETE /mcp"}, "properties": {"repobilityId": "9f96f31b9fd4330a", "scanner": "scanner-primary", "fingerprint": "56b4efafa0127feb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f12631f7bc6cf19f", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/integrations"}, "properties": {"repobilityId": "db37a9cced2d932e", "scanner": "scanner-primary", "fingerprint": "f12631f7bc6cf19f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a90f838a457c14f3", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/integrations"}, "properties": {"repobilityId": "d16fe2c9c6bb213f", "scanner": "scanner-primary", "fingerprint": "a90f838a457c14f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b06399397f88c7e", "level": "note", "message": {"text": "Unused endpoint: PATCH /:projectId/integrations/:id"}, "properties": {"repobilityId": "6537b4a12226aa6d", "scanner": "scanner-primary", "fingerprint": "5b06399397f88c7e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-14b02dfd7a1fc7ed", "level": "note", "message": {"text": "Unused endpoint: DELETE /:projectId/integrations/:id"}, "properties": {"repobilityId": "6cb8bbaada9e84f5", "scanner": "scanner-primary", "fingerprint": "14b02dfd7a1fc7ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d62687f1963218a", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/integrations/:id/test"}, "properties": {"repobilityId": "7e1f01bfbb0f485c", "scanner": "scanner-primary", "fingerprint": "8d62687f1963218a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-742fe5fc3e445213", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/integrations/:id/rotate-secret"}, "properties": {"repobilityId": "5b13f5f58b98804e", "scanner": "scanner-primary", "fingerprint": "742fe5fc3e445213", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-96c03c7d36133b37", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/integrations/:id/confirm-prod-deploy"}, "properties": {"repobilityId": "4c2cfa720341c104", "scanner": "scanner-primary", "fingerprint": "96c03c7d36133b37", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7d34fe73707496f3", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/integrations/:id/deliveries"}, "properties": {"repobilityId": "d1867ab5b1796258", "scanner": "scanner-primary", "fingerprint": "7d34fe73707496f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-840a13477f7a6354", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/integrations/:id/deliveries/:deliveryId/retry"}, "properties": {"repobilityId": "406a923d1fc17f14", "scanner": "scanner-primary", "fingerprint": "840a13477f7a6354", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0d1b151cedf6c68d", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/integrations/status"}, "properties": {"repobilityId": "0a4f7ebf496d36fb", "scanner": "scanner-primary", "fingerprint": "0d1b151cedf6c68d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-15e4ba84d8182924", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/integrations/mcp-preview"}, "properties": {"repobilityId": "35aa10a7b4ab859f", "scanner": "scanner-primary", "fingerprint": "15e4ba84d8182924", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "7b4d4b592b7f7f8d", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "1aba728df7cac76f", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f6cf2fe34c4dde93", "level": "note", "message": {"text": "Unused endpoint: POST /:id/bindings"}, "properties": {"repobilityId": "7d7d597d92de9c06", "scanner": "scanner-primary", "fingerprint": "f6cf2fe34c4dde93", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-539968b6f62bba8c", "level": "note", "message": {"text": "Unused endpoint: GET /:id/bindings"}, "properties": {"repobilityId": "495c65015a263f7a", "scanner": "scanner-primary", "fingerprint": "539968b6f62bba8c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-09b1d89ab53d3a78", "level": "note", "message": {"text": "Unused endpoint: POST /:id/test"}, "properties": {"repobilityId": "ebad70654f60fc22", "scanner": "scanner-primary", "fingerprint": "09b1d89ab53d3a78", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5fbc954f63526821", "level": "note", "message": {"text": "Unused endpoint: PATCH /:id"}, "properties": {"repobilityId": "03260bfda324caeb", "scanner": "scanner-primary", "fingerprint": "5fbc954f63526821", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a61c112b611f4bb", "level": "note", "message": {"text": "Unused endpoint: DELETE /:id"}, "properties": {"repobilityId": "2a9bd24ef4d8a360", "scanner": "scanner-primary", "fingerprint": "7a61c112b611f4bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1b7bee247ffc801", "level": "note", "message": {"text": "Unused endpoint: GET /summary"}, "properties": {"repobilityId": "bcdb061d51633975", "scanner": "scanner-primary", "fingerprint": "e1b7bee247ffc801", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ca5756175765b49d", "level": "note", "message": {"text": "Unused endpoint: GET /:id"}, "properties": {"repobilityId": "b35c612b32a8b43c", "scanner": "scanner-primary", "fingerprint": "ca5756175765b49d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90631dcf4fb49f54", "level": "note", "message": {"text": "Unused endpoint: POST /bulk"}, "properties": {"repobilityId": "8e7807d1b3e7d601", "scanner": "scanner-primary", "fingerprint": "90631dcf4fb49f54", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f68d8fd88857255e", "level": "note", "message": {"text": "Unused endpoint: POST /ingest-cli"}, "properties": {"repobilityId": "4f6ceaf8d0c69890", "scanner": "scanner-primary", "fingerprint": "f68d8fd88857255e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cccfe89f81ab208f", "level": "note", "message": {"text": "Unused endpoint: POST /preview"}, "properties": {"repobilityId": "a24f265a57801e56", "scanner": "scanner-primary", "fingerprint": "cccfe89f81ab208f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a30438a9a658c26", "level": "note", "message": {"text": "Unused endpoint: GET /install.sh"}, "properties": {"repobilityId": "4536259b4e3bcc8c", "scanner": "scanner-primary", "fingerprint": "6a30438a9a658c26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-725ea27a393ff2ba", "level": "note", "message": {"text": "Unused endpoint: GET /install/latest.json"}, "properties": {"repobilityId": "419650e5b1a14067", "scanner": "scanner-primary", "fingerprint": "725ea27a393ff2ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1381ab73b23c2656", "level": "note", "message": {"text": "Unused endpoint: GET /install/bin/:target"}, "properties": {"repobilityId": "61c1a6a422d9295a", "scanner": "scanner-primary", "fingerprint": "1381ab73b23c2656", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1de80da0b27387f7", "level": "note", "message": {"text": "Unused endpoint: GET /unread-count"}, "properties": {"repobilityId": "a15def0e846bb9cd", "scanner": "scanner-primary", "fingerprint": "1de80da0b27387f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6c7c815e4bbe342", "level": "note", "message": {"text": "Unused endpoint: POST /mark-all-read"}, "properties": {"repobilityId": "22f690b3e74ee84b", "scanner": "scanner-primary", "fingerprint": "a6c7c815e4bbe342", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e6adf10bd16b300", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/pm/run"}, "properties": {"repobilityId": "d29c1d19ddbedaf7", "scanner": "scanner-primary", "fingerprint": "7e6adf10bd16b300", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e947b8400bf863b", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/pm/escalations/:decisionId/respond"}, "properties": {"repobilityId": "a6ce5dd22c43a368", "scanner": "scanner-primary", "fingerprint": "0e947b8400bf863b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b0b06fa80fcaefd", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/pm/config"}, "properties": {"repobilityId": "3d383ce1d2b88e5b", "scanner": "scanner-primary", "fingerprint": "5b0b06fa80fcaefd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0faffda02ff3ecc2", "level": "note", "message": {"text": "Unused endpoint: PUT /:projectId/pm/config"}, "properties": {"repobilityId": "6bbd09863e0b1051", "scanner": "scanner-primary", "fingerprint": "0faffda02ff3ecc2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50034f6ac46996aa", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/pm/policies"}, "properties": {"repobilityId": "41ae45a1c56a6faf", "scanner": "scanner-primary", "fingerprint": "50034f6ac46996aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f0cc8eb54df24208", "level": "note", "message": {"text": "Unused endpoint: POST /:projectId/pm/policies"}, "properties": {"repobilityId": "797c72539aff82a3", "scanner": "scanner-primary", "fingerprint": "f0cc8eb54df24208", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-54e7cb9c72084824", "level": "note", "message": {"text": "Unused endpoint: PATCH /:projectId/pm/policies/:id"}, "properties": {"repobilityId": "465fd8d3b67ab16a", "scanner": "scanner-primary", "fingerprint": "54e7cb9c72084824", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f4cc1987ef057457", "level": "note", "message": {"text": "Unused endpoint: DELETE /:projectId/pm/policies/:id"}, "properties": {"repobilityId": "25cdbaf17f93a5d9", "scanner": "scanner-primary", "fingerprint": "f4cc1987ef057457", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bb9d6ec44a718639", "level": "note", "message": {"text": "Unused endpoint: GET /:projectId/pm/decisions"}, "properties": {"repobilityId": "74a2cfe4a6232eeb", "scanner": "scanner-primary", "fingerprint": "bb9d6ec44a718639", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-39cbda1740d0429b", "level": "note", "message": {"text": "Unused endpoint: USE /local"}, "properties": {"repobilityId": "d46a78790687c02d", "scanner": "scanner-primary", "fingerprint": "39cbda1740d0429b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ebb26d02887b30de", "level": "note", "message": {"text": "Unused endpoint: POST /local"}, "properties": {"repobilityId": "5b94857e12739b93", "scanner": "scanner-primary", "fingerprint": "ebb26d02887b30de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1fd8bc559c7934aa", "level": "note", "message": {"text": "Unused endpoint: POST /dev/force-verify"}, "properties": {"repobilityId": "8924b07b295ae5f3", "scanner": "scanner-primary", "fingerprint": "1fd8bc559c7934aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-806a0b5fa537337c", "level": "note", "message": {"text": "Unused endpoint: USE /me"}, "properties": {"repobilityId": "3ab0b15e39c83722", "scanner": "scanner-primary", "fingerprint": "806a0b5fa537337c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a8b6a940e2815697", "level": "note", "message": {"text": "Unused endpoint: USE /me/*"}, "properties": {"repobilityId": "d727883e72d64610", "scanner": "scanner-primary", "fingerprint": "a8b6a940e2815697", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b0fb29c2a726422", "level": "note", "message": {"text": "Unused endpoint: GET /me/preferences"}, "properties": {"repobilityId": "45e1d0c992d11b4f", "scanner": "scanner-primary", "fingerprint": "4b0fb29c2a726422", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a3d271237f61a5d7", "level": "note", "message": {"text": "Unused endpoint: PATCH /me/preferences"}, "properties": {"repobilityId": "5d3c7883509c0f7e", "scanner": "scanner-primary", "fingerprint": "a3d271237f61a5d7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8c7a083a4387c82", "level": "note", "message": {"text": "Unused endpoint: USE /preferences"}, "properties": {"repobilityId": "d91190ada73692d4", "scanner": "scanner-primary", "fingerprint": "c8c7a083a4387c82", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}