{"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": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined unresolved feedback: zekka-tech/Klubz"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#5\nRepo: zekka-tech/Klubz\nIssue/PR number: 5\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 29\nNode types: {'pr_file': 6, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined blueprint gap alignment: zekka-tech/Klubz"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nIssue/PR number: 4\nGraph consistency label: supported_by_high_confidence_link\nNodes: 117\nEdges: 144\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_cha"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined assumption checks: zekka-tech/Klubz"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 100\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 11, 'test_or_ci': 29, 'docs_or_claims': 18, 'schema_or_data': 2, 'api_or_backend': 14, 'dependency_or_build': 3, 'ui_or_frontend': 23}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8977038b6ff3e"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined test ci gap after feedback: zekka-tech/Klubz"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nIssue/PR number: 4\nGraph consistency label: supported_by_high_confidence_link\nNodes: 117\nEdges: 144\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined schema ui api mismatch: zekka-tech/Klubz"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#1\nRepo: zekka-tech/Klubz\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 10, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdg"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined bad chains: zekka-tech/Klubz"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#5\nRepo: zekka-tech/Klubz\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'schema_or_data': 1, 'api_or_backend': 3, 'ui_or_frontend': 1, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cb6b5d4189ef1497\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: zekka-tech/Klubz", "shortDescription": {"text": "Foundry mined mock as real or placeholder: zekka-tech/Klubz"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#2\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#2\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#2\nRepo: zekka-tech/Klubz\nIssue/PR number: 2\nGraph consistency label: supported_by_verification_signal\nNodes: 51\nEdges: 77\nNode types: {'pr_file': 38, 'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chai"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-4f1056e2000e3243", "name": "Stray `console.log` in TS/JS \u2014 tests/performance-test.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/performance-test.js:28"}, "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-e189f622c6897fea", "name": "Stray `console.log` in TS/JS \u2014 tests/test-runner.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/test-runner.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-721783e74341c453", "name": "Stray `console.log` in TS/JS \u2014 tests/comprehensive.test.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/comprehensive.test.js:25"}, "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-7283a88c3c2ec644", "name": "Stray `console.log` in TS/JS \u2014 tests/api.test.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/api.test.js:20"}, "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-d7dbb3b429f797d1", "name": "Stray `console.log` in TS/JS \u2014 tests/ui-contracts.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/ui-contracts.js:48"}, "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-02eea9b904fecfd7", "name": "Stray `console.log` in TS/JS \u2014 tests/security-audit.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/security-audit.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9df6cdff236b22a3", "name": "Stray `console.log` in TS/JS \u2014 tests/matching.test.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/matching.test.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b38f58c366320186", "name": "Stray `console.log` in TS/JS \u2014 tests/load/cold-start.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/cold-start.js:55"}, "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-2ff774592857696a", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-pwa-icons.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-pwa-icons.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e37a6527cc5dcc10", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-order.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-order.js:62"}, "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-9d4747be493a8f08", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-assetlinks-fingerprint.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-assetlinks-fingerprint.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d43dbf47074bfbf", "name": "Stray `console.log` in TS/JS \u2014 public/sw.js:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:289"}, "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-d861eceda29e0dd5", "name": "Stray `console.log` in TS/JS \u2014 public/static/js/app.js:6006", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/static/js/app.js:6006"}, "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-f3f92c93b323a3e3", "name": "Stray `console.log` in TS/JS \u2014 public/static/js/payments.js:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/static/js/payments.js:209"}, "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-bff2164c927d56d8", "name": "Stray `console.log` in TS/JS \u2014 src/index.tsx:385", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/index.tsx:385"}, "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-884fb816243b40b9", "name": "Stray `console.log` in TS/JS \u2014 src/middleware/security.ts:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/middleware/security.ts:224"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90861ce51ec52763", "name": "Stray `console.log` in TS/JS \u2014 src/middleware/auditLogger.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/middleware/auditLogger.ts:80"}, "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-c433f4e9e543151b", "name": "Stray `console.log` in TS/JS \u2014 src/lib/circuitBreaker.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/circuitBreaker.ts:170"}, "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-f062ee03c092f6bb", "name": "Stray `console.log` in TS/JS \u2014 src/lib/alerting.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/alerting.ts:70"}, "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-f6b2debed32652b3", "name": "Stray `console.log` in TS/JS \u2014 src/lib/logger.ts:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/logger.ts:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f64bebd8a863cda", "name": "Insecure pattern 'node_child_process' in scripts/generate-pwa-icons.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/generate-pwa-icons.js:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-59ffbb777067aeb4", "name": "Insecure pattern 'node_child_process' in scripts/apply-migrations-remote.cjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/apply-migrations-remote.cjs:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfd1a4ecb35869e6", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/app.js:332", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/app.js:332"}, "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-b01d457f9221a7b6", "name": "Insecure pattern 'insert_adjacent_html' in public/static/js/app.js:5484", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in public/static/js/app.js:5484"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce8622ec9a8a1c82", "name": "Insecure pattern 'local_storage_auth_token' in public/static/js/app.js:191", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in public/static/js/app.js:191"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-29937951994cf900", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/payments.js:439", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/payments.js:439"}, "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-e4ebaae7c854ffde", "name": "Insecure pattern 'exec_used' in src/types.ts:15", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/types.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d78ba68d02145596", "name": "Insecure pattern 'weak_hash' in src/routes/auth.ts:1083", "shortDescription": {"text": "Insecure pattern 'weak_hash' in src/routes/auth.ts:1083"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63e9d48aeec75484", "name": "Insecure pattern 'private_key_in_repo' in src/routes/auth.ts:232", "shortDescription": {"text": "Insecure pattern 'private_key_in_repo' in src/routes/auth.ts:232"}, "fullDescription": {"text": "Found a known-risky pattern (private_key_in_repo). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6e097d582622ceef", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-782c386e203cebb9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7e881573ce0cc41", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a8159899de93d69", "name": "Very large file: tests/matching.test.js (1288 lines)", "shortDescription": {"text": "Very large file: tests/matching.test.js (1288 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-ef62ebb644a3d980", "name": "Very large file: tests/integration/payments-routes-contracts.test.ts (1679 lines)", "shortDescription": {"text": "Very large file: tests/integration/payments-routes-contracts.test.ts (1679 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-16cc0827972650bd", "name": "Very large file: tests/integration/trips-routes-contracts.test.ts (1337 lines)", "shortDescription": {"text": "Very large file: tests/integration/trips-routes-contracts.test.ts (1337 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-1049cdcbb06da108", "name": "Very large file: tests/integration/security-hardening.test.ts (3542 lines)", "shortDescription": {"text": "Very large file: tests/integration/security-hardening.test.ts (3542 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-c901a6f236c00e2d", "name": "Very large file: tests/integration/auth-routes-contracts.test.ts (1305 lines)", "shortDescription": {"text": "Very large file: tests/integration/auth-routes-contracts.test.ts (1305 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-9fe216d4a7d3564f", "name": "Very large file: public/static/js/app.js (6914 lines)", "shortDescription": {"text": "Very large file: public/static/js/app.js (6914 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-680f0c0d4f871574", "name": "Very large file: src/index.tsx (1250 lines)", "shortDescription": {"text": "Very large file: src/index.tsx (1250 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-1f0cdcd6db4579f6", "name": "Very large file: src/routes/auth.ts (2254 lines)", "shortDescription": {"text": "Very large file: src/routes/auth.ts (2254 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-603da627abb94083", "name": "Very large file: src/routes/trips.ts (3143 lines)", "shortDescription": {"text": "Very large file: src/routes/trips.ts (3143 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-ae0f3eee4daf7091", "name": "Very large file: src/routes/users.ts (1444 lines)", "shortDescription": {"text": "Very large file: src/routes/users.ts (1444 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-9436e0d7c9892024", "name": "Very large file: src/routes/payments.ts (2663 lines)", "shortDescription": {"text": "Very large file: src/routes/payments.ts (2663 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-7f50ca927ebdb6d9", "name": "Very large file: src/routes/admin.ts (1798 lines)", "shortDescription": {"text": "Very large file: src/routes/admin.ts (1798 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 29 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 73 placeholder/mock markers across 10 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-e9dbaa4658444c9f", "name": "Commented-code block (6 lines) in tests/unit/matching-repository.test.ts:413", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/matching-repository.test.ts:413"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b958e8cfdde2885", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:70"}, "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-debdb2ed256e328f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/admin.js:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/admin.js: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-dffb10751d38b67b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/app.js:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/app.js:141"}, "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-1a6e193eac8d2734", "name": "Commented-code block (5 lines) in src/middleware/auth.ts:321", "shortDescription": {"text": "Commented-code block (5 lines) in src/middleware/auth.ts:321"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c3dca25c0948ae1", "name": "Commented-code block (11 lines) in src/middleware/security.ts:14", "shortDescription": {"text": "Commented-code block (11 lines) in src/middleware/security.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-3a3f4db76400b180", "name": "Commented-code block (7 lines) in src/middleware/rateLimiter.ts:93", "shortDescription": {"text": "Commented-code block (7 lines) in src/middleware/rateLimiter.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b415ac923ef13213", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/turnstile.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/turnstile.ts:42"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ca383afe1be341c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/synthetic.ts:200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/synthetic.ts:200"}, "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-e284370719236929", "name": "Legacy-named symbol `smart_matching_v2` in src/lib/featureFlags.ts:281", "shortDescription": {"text": "Legacy-named symbol `smart_matching_v2` in src/lib/featureFlags.ts:281"}, "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-1b5a76780c3df9aa", "name": "1 env vars used in code but missing from .env.example", "shortDescription": {"text": "1 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CI`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-749926bfc4daceea", "name": "Dangling fetch: POST /api/trips/${item.tripId}/rate (public/sw.js:336)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/${item.tripId}/rate (public/sw.js:336)"}, "fullDescription": {"text": "`public/sw.js:336` calls `POST /api/trips/${item.tripId}/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c7365360eb3bf5b", "name": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(address)}&format=json&limit=1 (pub", "shortDescription": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(address)}&format=json&limit=1 (public/static/js/app.js:706)"}, "fullDescription": {"text": "`public/static/js/app.js:706` calls `GET https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(address)}&format=json&limit=1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/nominatim.openstreetmap.org/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-161b47256d6362e5", "name": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.test.ts:142)"}, "fullDescription": {"text": "`tests/integration/messages-enhancements-contracts.test.ts:142` calls `GET /api/trips/1/messages/since/2026-01-01T00:00:00Z` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/messages/since/2026-01-01t00:00:00z`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76e0e85f950f4f8d", "name": "Dangling fetch: GET /api/trips/1/messages/since/not-a-date (tests/integration/messages-enhancements-contracts.test.ts:15", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/messages/since/not-a-date (tests/integration/messages-enhancements-contracts.test.ts:152)"}, "fullDescription": {"text": "`tests/integration/messages-enhancements-contracts.test.ts:152` calls `GET /api/trips/1/messages/since/not-a-date` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/messages/since/not-a-date`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a20bec206fd0aaf7", "name": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.test.ts:183)"}, "fullDescription": {"text": "`tests/integration/messages-enhancements-contracts.test.ts:183` calls `GET /api/trips/1/messages/since/2026-01-01T00:00:00Z` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/messages/since/2026-01-01t00:00:00z`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df7f9a814418a65b", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:80)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:80)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:80` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-b2b6c7e922c1423b", "name": "Dangling fetch: POST /api/trips/999/complete (tests/integration/trips-extended-contracts.test.ts:91)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/999/complete (tests/integration/trips-extended-contracts.test.ts:91)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:91` calls `POST /api/trips/999/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: `/trips/<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-b1739f9f6debc317", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:109)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:109)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:109` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-413a024b929be58d", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:127)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:127)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:127` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-ddede8a42f6126ab", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:163)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:163)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:163` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-be99b5bac04edf0d", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:181)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:181)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:181` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-984ac75d8ae9925d", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:192)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:192)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:192` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b878e873e97c7728", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:214)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:214)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:214` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23a833dcd697a30e", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:239)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:239)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:239` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5cb6ad1aac1fa03", "name": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:261)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:261)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:261` calls `POST /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6be3d4109ce3a81", "name": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:272)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:272)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:272` calls `POST /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e21d5a74fee0769b", "name": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:295)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:295)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:295` calls `POST /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7d6bb9bbd5a319c", "name": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:320)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:320)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:320` calls `GET /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8273fb56354e8cd0", "name": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:337)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:337)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:337` calls `GET /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5716609d50b4bda", "name": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:359)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:359)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:359` calls `GET /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77faa0133e9bf706", "name": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:378)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:378)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:378` calls `GET /api/trips/1/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: `/trips/<p>/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-89034f0a42d5bb02", "name": "Dangling fetch: GET /api/trips/999/route (tests/integration/trips-extended-contracts.test.ts:389)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/999/route (tests/integration/trips-extended-contracts.test.ts:389)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:389` calls `GET /api/trips/999/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: `/trips/<p>/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-5967edb48b9abbba", "name": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:410)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:410)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:410` calls `GET /api/trips/1/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: `/trips/<p>/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-e3bf36df51dbd8e2", "name": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:428)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:428)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:428` calls `GET /api/trips/1/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: `/trips/<p>/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-0772e75b434ef682", "name": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:450)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:450)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:450` calls `GET /api/trips/1/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: `/trips/<p>/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-3ad8ba86f5d0069b", "name": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (te", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (tests/integration/trips-extended-contracts.test.ts:473)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:473` calls `GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-221a4a7b362441ce", "name": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (te", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (tests/integration/trips-extended-contracts.test.ts:509)"}, "fullDescription": {"text": "`tests/integration/trips-extended-contracts.test.ts:509` calls `GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b712790effaec12", "name": "Dangling fetch: GET /api/disputes/not-a-number (tests/integration/disputes-routes-contracts.test.ts:636)", "shortDescription": {"text": "Dangling fetch: GET /api/disputes/not-a-number (tests/integration/disputes-routes-contracts.test.ts:636)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:636` calls `GET /api/disputes/not-a-number` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/disputes/not-a-number`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08646b3cc80bd48f", "name": "Dangling fetch: PUT /api/disputes/1/status (tests/integration/disputes-routes-contracts.test.ts:704)", "shortDescription": {"text": "Dangling fetch: PUT /api/disputes/1/status (tests/integration/disputes-routes-contracts.test.ts:704)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:704` calls `PUT /api/disputes/1/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: `/disputes/<p>/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-d2efb866e658d91e", "name": "Dangling fetch: PUT /api/disputes/abc/status (tests/integration/disputes-routes-contracts.test.ts:718)", "shortDescription": {"text": "Dangling fetch: PUT /api/disputes/abc/status (tests/integration/disputes-routes-contracts.test.ts:718)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:718` calls `PUT /api/disputes/abc/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: `/disputes/abc/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-6067076e78d37a57", "name": "Dangling fetch: PUT /api/disputes/999/status (tests/integration/disputes-routes-contracts.test.ts:736)", "shortDescription": {"text": "Dangling fetch: PUT /api/disputes/999/status (tests/integration/disputes-routes-contracts.test.ts:736)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:736` calls `PUT /api/disputes/999/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: `/disputes/<p>/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-3306bb29baac95ee", "name": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:756)", "shortDescription": {"text": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:756)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:756` calls `PUT /api/disputes/5/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: `/disputes/<p>/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-fb8641ff6770339a", "name": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:784)", "shortDescription": {"text": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:784)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:784` calls `PUT /api/disputes/5/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: `/disputes/<p>/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-6d5b3a1bd9f0db23", "name": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:801)", "shortDescription": {"text": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:801)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:801` calls `GET /api/disputes/admin/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/disputes/admin/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-716452902e44ef04", "name": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:821)", "shortDescription": {"text": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:821)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:821` calls `GET /api/disputes/admin/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/disputes/admin/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83cc49f59fd39c64", "name": "Dangling fetch: GET /api/disputes/admin/list?status=open (tests/integration/disputes-routes-contracts.test.ts:838)", "shortDescription": {"text": "Dangling fetch: GET /api/disputes/admin/list?status=open (tests/integration/disputes-routes-contracts.test.ts:838)"}, "fullDescription": {"text": "`tests/integration/disputes-routes-contracts.test.ts:838` calls `GET /api/disputes/admin/list?status=open` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/disputes/admin/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbf29920e23ef0b4", "name": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:171)", "shortDescription": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:171)"}, "fullDescription": {"text": "`tests/integration/fee-allocations.test.ts:171` calls `POST /api/fee-allocations/10/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: `/fee-allocations/<p>/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-4add8461f88872b9", "name": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:201)", "shortDescription": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:201)"}, "fullDescription": {"text": "`tests/integration/fee-allocations.test.ts:201` calls `POST /api/fee-allocations/10/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: `/fee-allocations/<p>/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-93841099a101f8b8", "name": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:243)", "shortDescription": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:243)"}, "fullDescription": {"text": "`tests/integration/fee-allocations.test.ts:243` calls `POST /api/fee-allocations/10/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: `/fee-allocations/<p>/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-8e46f1a504729c77", "name": "Dangling fetch: GET /api/matching/rider-requests?status=weird (tests/integration/query-validation-hardening.test.ts:144)", "shortDescription": {"text": "Dangling fetch: GET /api/matching/rider-requests?status=weird (tests/integration/query-validation-hardening.test.ts:144)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:144` calls `GET /api/matching/rider-requests?status=weird` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/rider-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e028101271ff7f12", "name": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:204)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:204)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:204` calls `PUT /api/matching/driver-trips/trip-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: `/matching/driver-trips/trip-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-41044a677b2dcded", "name": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:213)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:213)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:213` calls `PUT /api/matching/driver-trips/trip-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: `/matching/driver-trips/trip-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-fa16ab4f400d54ea", "name": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:222)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:222)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:222` calls `PUT /api/matching/driver-trips/trip-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: `/matching/driver-trips/trip-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-b18bbf69b58b09f4", "name": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:257)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:257)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:257` calls `PUT /api/matching/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: `/matching/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-9819731539989212", "name": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:266)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:266)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:266` calls `PUT /api/matching/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: `/matching/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-1e47caa98b4c0819", "name": "Dangling fetch: GET /api/trips/available?pickupLat=200&pickupLng=28&dropoffLat=-26&dropoffLng=28 (tests/integration/quer", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=200&pickupLng=28&dropoffLat=-26&dropoffLng=28 (tests/integration/query-validation-hardening.test.ts:380)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:380` calls `GET /api/trips/available?pickupLat=200&pickupLng=28&dropoffLat=-26&dropoffLng=28` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91ecf88538a38117", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/query-validation-hardening.test.ts:404)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/query-validation-hardening.test.ts:404)"}, "fullDescription": {"text": "`tests/integration/query-validation-hardening.test.ts:404` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4df070210916d162", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:111)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:111)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:111` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83ef44cbad161984", "name": "Dangling fetch: DELETE /api/safety/contacts/1 (tests/integration/safety-routes-contracts.test.ts:127)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts/1 (tests/integration/safety-routes-contracts.test.ts:127)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:127` calls `DELETE /api/safety/contacts/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: `/safety/contacts/<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-d55975cd6adbf712", "name": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:146)", "shortDescription": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:146)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:146` calls `GET /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7adbd4ddca5318b7", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:161)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:161)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:161` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ea6ae73f4fbfb7a", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:184)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:184)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:184` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90b09672424cbd18", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:207)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:207)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:207` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8d9a2bce6c8cbb3", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:229)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:229)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:229` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-132a702d01ad2362", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:251)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:251)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:251` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18d1273ad490947f", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:280)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:280)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:280` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c4c2245193f8471", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:310)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:310)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:310` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a56d303890c8079", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:339)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:339)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:339` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e6077539a7447d5", "name": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:364)", "shortDescription": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:364)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:364` calls `GET /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe572e8cd92d1a27", "name": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:393)", "shortDescription": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:393)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:393` calls `GET /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-250d4db188d327ce", "name": "Dangling fetch: DELETE /api/safety/contacts/abc (tests/integration/safety-routes-contracts.test.ts:426)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts/abc (tests/integration/safety-routes-contracts.test.ts:426)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:426` calls `DELETE /api/safety/contacts/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: `/safety/contacts/abc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31f91e9dd233a801", "name": "Dangling fetch: DELETE /api/safety/contacts/999 (tests/integration/safety-routes-contracts.test.ts:445)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts/999 (tests/integration/safety-routes-contracts.test.ts:445)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:445` calls `DELETE /api/safety/contacts/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: `/safety/contacts/<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-d3fe4c23cbd8a3e4", "name": "Dangling fetch: DELETE /api/safety/contacts/10 (tests/integration/safety-routes-contracts.test.ts:465)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts/10 (tests/integration/safety-routes-contracts.test.ts:465)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:465` calls `DELETE /api/safety/contacts/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: `/safety/contacts/<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-0e43786782e77de7", "name": "Dangling fetch: DELETE /api/safety/contacts/20 (tests/integration/safety-routes-contracts.test.ts:488)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts/20 (tests/integration/safety-routes-contracts.test.ts:488)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:488` calls `DELETE /api/safety/contacts/20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts/<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-12ca8077d1718198", "name": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:671)", "shortDescription": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:671)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:671` calls `POST /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-286a0f85d1686815", "name": "Dangling fetch: DELETE /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:686)", "shortDescription": {"text": "Dangling fetch: DELETE /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:686)"}, "fullDescription": {"text": "`tests/integration/safety-routes-contracts.test.ts:686` calls `DELETE /api/safety/contacts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/safety/contacts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04054b2b11465808", "name": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:145)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:145)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:145` calls `GET /api/trips/group-bookings/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: `/trips/group-bookings/<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-d74d4b7c298e685b", "name": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:154)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:154)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:154` calls `GET /api/trips/group-bookings/as-payer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/group-bookings/as-payer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bc910636434a228", "name": "Dangling fetch: GET /api/trips/group-bookings/999 (tests/integration/group-bookings.test.ts:442)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/999 (tests/integration/group-bookings.test.ts:442)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:442` calls `GET /api/trips/group-bookings/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: `/trips/group-bookings/<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-81274a38baae72b5", "name": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:459)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:459)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:459` calls `GET /api/trips/group-bookings/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: `/trips/group-bookings/<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-803b5a0452a03b07", "name": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:533)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:533)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:533` calls `GET /api/trips/group-bookings/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: `/trips/group-bookings/<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-1849285ff9d9df20", "name": "Dangling fetch: GET /api/trips/group-bookings/abc (tests/integration/group-bookings.test.ts:557)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/abc (tests/integration/group-bookings.test.ts:557)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:557` calls `GET /api/trips/group-bookings/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: `/trips/group-bookings/abc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-419413cbad97d653", "name": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:595)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:595)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:595` calls `GET /api/trips/group-bookings/as-payer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/group-bookings/as-payer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cb39e2acb81193a6", "name": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:616)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:616)"}, "fullDescription": {"text": "`tests/integration/group-bookings.test.ts:616` calls `GET /api/trips/group-bookings/as-payer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/group-bookings/as-payer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f01345898867428e", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/request-id-contracts.test.ts:176)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/request-id-contracts.test.ts:176)"}, "fullDescription": {"text": "`tests/integration/request-id-contracts.test.ts:176` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-881d3b72f4dc5ce7", "name": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:246)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:246)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:246` calls `GET /api/subscriptions/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: `/subscriptions/<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-a02ef389ef4de714", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:271)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:271)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:271` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43e677a6d9728da0", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:314)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:314)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:314` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12178a6e35b077fc", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-03-03/morning (tests/integration/subscriptions-routes-contracts.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-03-03/morning (tests/integration/subscriptions-routes-contracts.test.ts:341)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:341` calls `DELETE /api/subscriptions/1/days/2026-03-03/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-03-03/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-183350a7bf98a880", "name": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:361)", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:361)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:361` calls `DELETE /api/subscriptions/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: `/subscriptions/<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-75539e1a50d0119e", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:419)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:419)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:419` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18bf945b990cbf77", "name": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:496)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:496)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:496` calls `GET /api/subscriptions/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: `/subscriptions/<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-6aace1086c81e7c2", "name": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:506)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:506)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:506` calls `GET /api/subscriptions/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: `/subscriptions/<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-b30c41d7b216e0c8", "name": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:532)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:532)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:532` calls `GET /api/subscriptions/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: `/subscriptions/<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-039c3821bf71d701", "name": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:549)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:549)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:549` calls `GET /api/subscriptions/1/calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d31e768846d6ebc", "name": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:559)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:559)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:559` calls `GET /api/subscriptions/1/calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b7848696eaa936fb", "name": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:591)", "shortDescription": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:591)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:591` calls `GET /api/subscriptions/1/calendar` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/calendar`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a122e2b1744b4457", "name": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.tes", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.test.ts:608)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:608` calls `POST /api/subscriptions/1/days/2026-04-10/standard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/standard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2911e91fbd898de7", "name": "Dangling fetch: POST /api/subscriptions/1/days/not-a-date/morning (tests/integration/subscriptions-routes-contracts.test", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/days/not-a-date/morning (tests/integration/subscriptions-routes-contracts.test.ts:624)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:624` calls `POST /api/subscriptions/1/days/not-a-date/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/not-a-date/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a04886b7e72d43ca", "name": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:638)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:638` calls `POST /api/subscriptions/1/days/2026-04-10/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2cf66aef9d0944ff", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.t", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.test.ts:653)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:653` calls `DELETE /api/subscriptions/1/days/2026-04-10/standard` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/standard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74f7720de73aba57", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:667)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:667` calls `DELETE /api/subscriptions/1/days/2026-04-10/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-752175e946aaa129", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:688)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:688` calls `DELETE /api/subscriptions/1/days/2026-04-10/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc69b5bcab472c11", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:717)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:717` calls `DELETE /api/subscriptions/1/days/2026-04-10/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1338d8beb5eb3c7", "name": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.te", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:731)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:731` calls `DELETE /api/subscriptions/1/days/2026-04-10/morning` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/days/2026-04-10/morning`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-218849d02c86f1c4", "name": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:744)", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:744)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:744` calls `DELETE /api/subscriptions/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: `/subscriptions/<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-adba601545bb4d7b", "name": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:763)", "shortDescription": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:763)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:763` calls `DELETE /api/subscriptions/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: `/subscriptions/<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-e2b478ecf808f38a", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:776)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:776)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:776` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-daf4a8a7c4378697", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:799)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:799)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:799` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-146a8e32ea1ebb26", "name": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:821)", "shortDescription": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:821)"}, "fullDescription": {"text": "`tests/integration/subscriptions-routes-contracts.test.ts:821` calls `POST /api/subscriptions/1/payment` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/subscriptions/<p>/payment`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f6de76642ed369c", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:129)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:129)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:129` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43b2ba742065c71a", "name": "Dangling fetch: GET /api/payments/process?tripId=10&method=stripe (tests/integration/payments-routes-contracts.test.ts:1", "shortDescription": {"text": "Dangling fetch: GET /api/payments/process?tripId=10&method=stripe (tests/integration/payments-routes-contracts.test.ts:181)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:181` calls `GET /api/payments/process?tripId=10&method=stripe` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/process`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8b00914b0fcffff", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:250)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:250)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:250` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4c940ef215b6b11", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:360)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:360)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:360` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-24e94a5c41713251", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:613)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:613)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:613` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-777ed4a7ff0e9cfe", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:631)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:631)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:631` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0f6aa3a6d3ebd1b", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:658)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:658)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:658` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-108896f9e3434e3c", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:676)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:676)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:676` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-017f164926382b62", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:690)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:690)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:690` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08340d31ba07145e", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:729)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:729)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:729` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab49f266cbc30bb9", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:780)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:780)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:780` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-58a8a1a5628529b4", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:818)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:818)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:818` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ff0af81be758fb46", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:851)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:851)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:851` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1568d3b84caa8ab", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:880)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:880)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:880` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0127a50792d855d1", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:911)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:911)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:911` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4050fe72b6eaa78", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:935)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:935)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:935` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5f5f35fe9deb679", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:950)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:950)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:950` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a4342f814ce3e280", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:966)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:966)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:966` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f85926b2d2dfcdd", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:983)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:983)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:983` calls `GET /api/payments/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: `/payments/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-3a00634725f5a29b", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:997)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:997)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:997` calls `GET /api/payments/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: `/payments/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-be24b69035c3a356", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1012)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1012)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1012` calls `GET /api/payments/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: `/payments/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-bfa7f8a1d32ea3f5", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1034)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1034)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1034` calls `GET /api/payments/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: `/payments/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-90338a2ad08405a8", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1178)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1178)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1178` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94218c887dd9d8b8", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1214)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1214)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1214` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-501cb4bf5bcf0260", "name": "Dangling fetch: GET /api/payments/payfast/payfast-return?status=cancelled (tests/integration/payments-routes-contracts.t", "shortDescription": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?status=cancelled (tests/integration/payments-routes-contracts.test.ts:1237)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1237` calls `GET /api/payments/payfast/payfast-return?status=cancelled` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-return`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-697a7ea6a09d9131", "name": "Dangling fetch: GET /api/payments/payfast/payfast-return (tests/integration/payments-routes-contracts.test.ts:1252)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return (tests/integration/payments-routes-contracts.test.ts:1252)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1252` calls `GET /api/payments/payfast/payfast-return` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-return`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ad0cf23277e616e", "name": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_12345 (tests/integration/payments-routes-contr", "shortDescription": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_12345 (tests/integration/payments-routes-contracts.test.ts:1269)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1269` calls `GET /api/payments/payfast/payfast-return?pf_payment_id=pf_12345` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-return`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-873c4f9432e45967", "name": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_67890 (tests/integration/payments-routes-contr", "shortDescription": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_67890 (tests/integration/payments-routes-contracts.test.ts:1286)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1286` calls `GET /api/payments/payfast/payfast-return?pf_payment_id=pf_67890` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-return`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09f4e7d217515f02", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1341)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1341` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-481ba230d1a377d2", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1361)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1361` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-0e561cd5c97cb5e5", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1382)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1382` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-ad975d2bb3810a5a", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1402)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1402` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-3cc138548b9a9ea0", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1422)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1422` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-4a2026008c6ccb62", "name": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1442)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1442` calls `POST /api/payments/payfast/payfast-route-change-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: `/payments/payfast/payfast-route-change-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-03a51d6b6e50c6b0", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1486)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1486)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1486` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd49764ad1d4781d", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1529)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1529)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1529` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02550295cd2660e1", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1566)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1566)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1566` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-426cd09698ae0ecf", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1601)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1601)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1601` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-43ee915c45ae73ed", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1641)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1641)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1641` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ede46b9c9495656b", "name": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1670)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1670)"}, "fullDescription": {"text": "`tests/integration/payments-routes-contracts.test.ts:1670` calls `POST /api/payments/payfast/payfast-webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/payfast/payfast-webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aaf7d78c0d152eed", "name": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:88)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:88)"}, "fullDescription": {"text": "`tests/integration/matching-routes-contracts.test.ts:88` calls `POST /api/matching/rider-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/rider-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50c5301946a3e58e", "name": "Dangling fetch: GET /api/matching/config (tests/integration/matching-routes-contracts.test.ts:115)", "shortDescription": {"text": "Dangling fetch: GET /api/matching/config (tests/integration/matching-routes-contracts.test.ts:115)"}, "fullDescription": {"text": "`tests/integration/matching-routes-contracts.test.ts:115` calls `GET /api/matching/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: `/matching/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-a6a90e4987b61ff1", "name": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:169)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:169)"}, "fullDescription": {"text": "`tests/integration/matching-routes-contracts.test.ts:169` calls `POST /api/matching/rider-requests` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/rider-requests`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee437609a898b0ea", "name": "Dangling fetch: DELETE /api/matching/driver-trips/dt-1 (tests/integration/matching-routes-contracts.test.ts:232)", "shortDescription": {"text": "Dangling fetch: DELETE /api/matching/driver-trips/dt-1 (tests/integration/matching-routes-contracts.test.ts:232)"}, "fullDescription": {"text": "`tests/integration/matching-routes-contracts.test.ts:232` calls `DELETE /api/matching/driver-trips/dt-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: `/matching/driver-trips/dt-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-fd75744a8cb7cb24", "name": "Dangling fetch: GET /api/matching/stats (tests/integration/matching-routes-contracts.test.ts:321)", "shortDescription": {"text": "Dangling fetch: GET /api/matching/stats (tests/integration/matching-routes-contracts.test.ts:321)"}, "fullDescription": {"text": "`tests/integration/matching-routes-contracts.test.ts:321` calls `GET /api/matching/stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7577b94fa91276a2", "name": "Dangling fetch: GET /api/admin/users/77 (tests/integration/admin-routes-hardening.test.ts:170)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/users/77 (tests/integration/admin-routes-hardening.test.ts:170)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:170` calls `GET /api/admin/users/77` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/users/<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-8243dcba62e1a85d", "name": "Dangling fetch: GET /api/admin/logs (tests/integration/admin-routes-hardening.test.ts:191)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/logs (tests/integration/admin-routes-hardening.test.ts:191)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:191` calls `GET /api/admin/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: `/admin/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-dc6587b4f1d1ff23", "name": "Dangling fetch: GET /api/admin/logs?page=-1 (tests/integration/admin-routes-hardening.test.ts:256)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/logs?page=-1 (tests/integration/admin-routes-hardening.test.ts:256)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:256` calls `GET /api/admin/logs?page=-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: `/admin/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-e808c9ee4d9b9e6b", "name": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:382)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:382)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:382` calls `PUT /api/admin/users/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: `/admin/users/<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-4f117f649e64e934", "name": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:406)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:406)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:406` calls `PUT /api/admin/users/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: `/admin/users/<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-109dbc0d57e078bc", "name": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:434)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:434)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:434` calls `PUT /api/admin/users/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: `/admin/users/<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-b02e40ae3a50e6f4", "name": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:467)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:467)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:467` calls `PUT /api/admin/users/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: `/admin/users/<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-782eddcf775141c1", "name": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:507)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:507)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:507` calls `POST /api/admin/users/10/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/users/<p>/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bbed0f67442e387", "name": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:541)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:541)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:541` calls `POST /api/admin/users/10/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/users/<p>/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42aad6d15a4707fa", "name": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:614)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:614)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:614` calls `POST /api/admin/cron/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: `/admin/cron/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-0089d251415b670e", "name": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:631)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:631)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:631` calls `POST /api/admin/cron/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: `/admin/cron/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-dc1b64f8208046b7", "name": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:658)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:658)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:658` calls `POST /api/admin/cron/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: `/admin/cron/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-2d33b8641ec0bcd4", "name": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:678)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:678)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:678` calls `GET /api/admin/feature-flags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae86287492fa51f0", "name": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:688)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:688)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:688` calls `GET /api/admin/feature-flags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84b63301db4557fa", "name": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:703)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:703)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:703` calls `GET /api/admin/feature-flags` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8b5e3e964738c2f6", "name": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:715)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:715)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:715` calls `PUT /api/admin/feature-flags/test_feature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/test_feature`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bc55b874f4f2100", "name": "Dangling fetch: PUT /api/admin/feature-flags/INVALID-FLAG! (tests/integration/admin-routes-hardening.test.ts:729)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/feature-flags/INVALID-FLAG! (tests/integration/admin-routes-hardening.test.ts:729)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:729` calls `PUT /api/admin/feature-flags/INVALID-FLAG!` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/invalid-flag!`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ccdddbcf5c01d9a", "name": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:745)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:745)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:745` calls `PUT /api/admin/feature-flags/test_feature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/test_feature`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90f76afffc224259", "name": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:771)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:771)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:771` calls `PUT /api/admin/feature-flags/test_feature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/test_feature`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f175f0071f46660", "name": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:790)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:790)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:790` calls `DELETE /api/admin/feature-flags/test_feature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/test_feature`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a139da8cb9c55b9", "name": "Dangling fetch: DELETE /api/admin/feature-flags/BAD NAME! (tests/integration/admin-routes-hardening.test.ts:803)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/BAD NAME! (tests/integration/admin-routes-hardening.test.ts:803)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:803` calls `DELETE /api/admin/feature-flags/BAD NAME!` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/bad name!`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a4570e888b472d2", "name": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:829)", "shortDescription": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:829)"}, "fullDescription": {"text": "`tests/integration/admin-routes-hardening.test.ts:829` calls `DELETE /api/admin/feature-flags/test_feature` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/feature-flags/test_feature`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57b698a1e82dc887", "name": "Dangling fetch: GET /api/users/42/rating (tests/integration/user-routes-hardening.test.ts:118)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/rating (tests/integration/user-routes-hardening.test.ts:118)"}, "fullDescription": {"text": "`tests/integration/user-routes-hardening.test.ts:118` calls `GET /api/users/42/rating` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/rating`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ec1b7f01f96fdf9", "name": "Dangling fetch: GET /api/users/not-a-number/rating (tests/integration/user-routes-hardening.test.ts:131)", "shortDescription": {"text": "Dangling fetch: GET /api/users/not-a-number/rating (tests/integration/user-routes-hardening.test.ts:131)"}, "fullDescription": {"text": "`tests/integration/user-routes-hardening.test.ts:131` calls `GET /api/users/not-a-number/rating` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/not-a-number/rating`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea1545191448e530", "name": "Dangling fetch: GET /api/users/9/carbon-certificate (tests/integration/user-routes-hardening.test.ts:289)", "shortDescription": {"text": "Dangling fetch: GET /api/users/9/carbon-certificate (tests/integration/user-routes-hardening.test.ts:289)"}, "fullDescription": {"text": "`tests/integration/user-routes-hardening.test.ts:289` calls `GET /api/users/9/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38463d038dbee2da", "name": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:117)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:117)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:117` calls `GET /api/admin/organizations/org-abc/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-abc/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9b5af1a6a85f689", "name": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:132)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:132)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:132` calls `GET /api/admin/organizations/org-abc/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-abc/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-158562fe103c2c04", "name": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:152)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:152)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:152` calls `GET /api/admin/organizations/org-abc/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-abc/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c00b74b03151a15", "name": "Dangling fetch: GET /api/admin/organizations/nonexistent-org/analytics (tests/integration/fleet-analytics-contracts.test", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/nonexistent-org/analytics (tests/integration/fleet-analytics-contracts.test.ts:177)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:177` calls `GET /api/admin/organizations/nonexistent-org/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/nonexistent-org/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ed8333d93413691", "name": "Dangling fetch: GET /api/admin/organizations/org-fleet-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-fleet-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:228)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:228` calls `GET /api/admin/organizations/org-fleet-1/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-fleet-1/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3dbfdaa6da8ab440", "name": "Dangling fetch: GET /api/admin/organizations/org-super-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-super-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:297)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:297` calls `GET /api/admin/organizations/org-super-1/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-super-1/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db10201dbd72a63c", "name": "Dangling fetch: GET /api/admin/organizations/org-empty/analytics (tests/integration/fleet-analytics-contracts.test.ts:33", "shortDescription": {"text": "Dangling fetch: GET /api/admin/organizations/org-empty/analytics (tests/integration/fleet-analytics-contracts.test.ts:334)"}, "fullDescription": {"text": "`tests/integration/fleet-analytics-contracts.test.ts:334` calls `GET /api/admin/organizations/org-empty/analytics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/organizations/org-empty/analytics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c31557195f235b10", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:75)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:75)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:75` calls `GET /api/payments/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: `/payments/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-bb80c40b3e2f7984", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:85)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:85)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:85` calls `GET /api/payments/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: `/payments/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-3810b84cd2d7f057", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:94)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:94)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:94` calls `GET /api/payments/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: `/payments/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-ec34bdea8c9f8546", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:104)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:104)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:104` calls `GET /api/payments/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: `/payments/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-315b065634729afe", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:114)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:114)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:114` calls `GET /api/payments/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: `/payments/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-c9756b62923d291a", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:136)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:136)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:136` calls `GET /api/payments/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: `/payments/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-7c2127348cdf45cb", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:149)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:149)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:149` calls `GET /api/payments/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: `/payments/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-6ea4cbf86f398b95", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:166)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:166)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:166` calls `GET /api/payments/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: `/payments/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-7fa2118f2abf2555", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:178)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:178)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:178` calls `GET /api/payments/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: `/payments/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-c453d7e21cc69acc", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:198)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:198)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:198` calls `GET /api/payments/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: `/payments/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-ed18eb356b0acdde", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:212)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:212)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:212` calls `GET /api/payments/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: `/payments/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-a79087ca9ee6eca6", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:229)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:229)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:229` calls `GET /api/payments/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: `/payments/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-a1b5af50965a128f", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:249)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:249)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:249` calls `GET /api/payments/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: `/payments/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-58a9c67211a1d037", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:267)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:267)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:267` calls `GET /api/payments/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: `/payments/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-fa4a99345d6ee1e3", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:286)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:286)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:286` calls `GET /api/payments/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: `/payments/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-aa8cdb0bc1cfb61b", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:298)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:298)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:298` calls `GET /api/payments/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: `/payments/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-9378f4b04f393ca1", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:315)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:315)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:315` calls `GET /api/payments/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: `/payments/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-765683f55d90fa17", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:336)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:336)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:336` calls `GET /api/payments/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: `/payments/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-955fc756282f92a1", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:354)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:354)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:354` calls `GET /api/payments/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: `/payments/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-1e096e0d8871f686", "name": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:365)", "shortDescription": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:365)"}, "fullDescription": {"text": "`tests/integration/payment-config-routes-contracts.test.ts:365` calls `GET /api/payments/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: `/payments/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-12abb40c86b5cbed", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:196)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:196)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:196` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-8b63a537d11ae957", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:248)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:248)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:248` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-82b7e1893156b7ab", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:297)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:297)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:297` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-07c99d139e3bd07e", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:350)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:350)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:350` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-65218ee6051bb7b5", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:415)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:415)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:415` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-87c4f755d621776b", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/notification-preferences-enforcement.test.ts:467)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/notification-preferences-enforcement.test.ts:467)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:467` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51d6df6f6270f197", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/notification-preferences-enforcement.test.ts:518)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/notification-preferences-enforcement.test.ts:518)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:518` calls `POST /api/trips/1/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: `/trips/<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-9ce73a3fe97582eb", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:568)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:568)"}, "fullDescription": {"text": "`tests/integration/notification-preferences-enforcement.test.ts:568` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a2d0b166df90af5", "name": "Dangling fetch: GET /api/trips/available (tests/integration/trips-routes-contracts.test.ts:82)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available (tests/integration/trips-routes-contracts.test.ts:82)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:82` calls `GET /api/trips/available` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1431bfd08a8119ab", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:87)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:87)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:87` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c74224cce8a50f81", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:92)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:92)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:92` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aff6cd2242709756", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:97)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:97)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:97` calls `POST /api/trips/1/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: `/trips/<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-60eac5c0ec90870f", "name": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:102)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:102)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:102` calls `DELETE /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5d5c2b4bd36d039f", "name": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:107)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:107)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:107` calls `POST /api/trips/1/route-change` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/route-change`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53c54b6e80cbdec8", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:123)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:123)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:123` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e27a405ac16c261", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:144)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:144)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:144` calls `POST /api/trips/1/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: `/trips/<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-3706e63854b6bbaa", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:159)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:159)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:159` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-38b1238a156d02ab", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:180)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:180)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:180` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-161cda98352709a7", "name": "Dangling fetch: POST /api/trips/999/cancel (tests/integration/trips-routes-contracts.test.ts:200)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/999/cancel (tests/integration/trips-routes-contracts.test.ts:200)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:200` calls `POST /api/trips/999/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: `/trips/<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-ec75a9a6907825fb", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:216)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:216)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:216` calls `POST /api/trips/1/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: `/trips/<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-b7ce7e4d32feca6f", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:234)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:234)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:234` calls `POST /api/trips/1/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: `/trips/<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-7099bc2a1056c80f", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:252)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:252)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:252` calls `POST /api/trips/1/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: `/trips/<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-1100399701d8d945", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:268)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:268)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:268` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-4aad9bdae44993a7", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:290)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:290)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:290` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-28fd0a93403d3e97", "name": "Dangling fetch: POST /api/trips/999/book (tests/integration/trips-routes-contracts.test.ts:303)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/999/book (tests/integration/trips-routes-contracts.test.ts:303)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:303` calls `POST /api/trips/999/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7b8c585c0b4c9f84", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:323)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:323)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:323` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-197523a82d44174d", "name": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:370)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:370)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:370` calls `POST /api/trips/1/route-change` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/route-change`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f0b7f7a81d3f284", "name": "Dangling fetch: POST /api/trips/1/route-change/88/approve (tests/integration/trips-routes-contracts.test.ts:425)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/route-change/88/approve (tests/integration/trips-routes-contracts.test.ts:425)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:425` calls `POST /api/trips/1/route-change/88/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: `/trips/<p>/route-change/<p>/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-a01cddc129ff86f5", "name": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:460)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:460)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:460` calls `DELETE /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f841262dab452148", "name": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:494)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:494)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:494` calls `DELETE /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2bdb6d2f65b61174", "name": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:528)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:528)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:528` calls `DELETE /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82bae896222b630f", "name": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:549)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:549)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:549` calls `POST /api/trips/1/waitlist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/waitlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-885eccdfc8c33d4d", "name": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:572)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:572)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:572` calls `POST /api/trips/1/waitlist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/waitlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e97bf8a63941df8a", "name": "Dangling fetch: GET /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:593)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:593)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:593` calls `GET /api/trips/1/waitlist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/waitlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a9f3f0b65515eb5", "name": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:622)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:622)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:622` calls `POST /api/trips/1/arrive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/arrive`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-220c5853dbbc779e", "name": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:646)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:646)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:646` calls `POST /api/trips/1/arrive` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/arrive`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f6cd7fbbd2d2964", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:672)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:672)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:672` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-deda5c2aad282f31", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:697)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:697)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:697` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7253ea6e673285b", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:734)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:734)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:734` calls `POST /api/trips/1/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: `/trips/<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-fa36df65185a6751", "name": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0 (tests/integration/trips-routes-contracts.test.t", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0 (tests/integration/trips-routes-contracts.test.ts:749)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:749` calls `GET /api/trips/available?pickupLat=-26.2&pickupLng=28.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: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-039032af9938d094", "name": "Dangling fetch: GET /api/trips/available?pickupLat=999&pickupLng=28.0&dropoffLat=-26.0&dropoffLng=28.1 (tests/integratio", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=999&pickupLng=28.0&dropoffLat=-26.0&dropoffLng=28.1 (tests/integration/trips-routes-contracts.test.ts:759)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:759` calls `GET /api/trips/available?pickupLat=999&pickupLng=28.0&dropoffLat=-26.0&dropoffLng=28.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: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75d1fbb50d26dcab", "name": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0&dropoffLat=-26.1&dropoffLng=28.1 (tests/integrat", "shortDescription": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0&dropoffLat=-26.1&dropoffLng=28.1 (tests/integration/trips-routes-contracts.test.ts:773)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:773` calls `GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0&dropoffLat=-26.1&dropoffLng=28.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: `/trips/available`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9745b0f55f36a793", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:787)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:787)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:787` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-51198f0f95bdee01", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:798)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:798)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:798` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d14480c11ed88cd6", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:813)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:813)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:813` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e19ac904e520e0c5", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:831)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:831)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:831` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6c469d7541c60fb", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:849)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:849)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:849` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a0ea2d280563e1f", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:870)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:870)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:870` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-569ac1e197ce87a7", "name": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:887)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:887)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:887` calls `POST /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e14316a696b722e", "name": "Dangling fetch: POST /api/trips/notanumber/location (tests/integration/trips-routes-contracts.test.ts:901)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/notanumber/location (tests/integration/trips-routes-contracts.test.ts:901)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:901` calls `POST /api/trips/notanumber/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/notanumber/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3f6992acd6073ab5", "name": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:915)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:915)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:915` calls `POST /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-674d22445fae69a3", "name": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:928)", "shortDescription": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:928)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:928` calls `GET /api/trips/1/location` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/location`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db8721666d34ffb5", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:935)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:935)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:935` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-a25e3670d3fde012", "name": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:949)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:949)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:949` calls `POST /api/trips/1/complete` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<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-d2d0a9c5affb4273", "name": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:960)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:960)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:960` calls `DELETE /api/trips/1/waitlist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/waitlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a155920eb2f6c097", "name": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:970)", "shortDescription": {"text": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:970)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:970` calls `DELETE /api/trips/1/waitlist` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/waitlist`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27a0540b9feb386c", "name": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:981)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:981)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:981` calls `POST /api/trips/1/bookings/1/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7a763c1743a1fd7", "name": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:995)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:995)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:995` calls `POST /api/trips/1/bookings/1/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e91373fd7983412", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1006)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1006)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1006` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4845f02601d72b71", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1016)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1016)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1016` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db33b2769acd5b8d", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1026)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1026)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1026` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6175a00b48441b6", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1038)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1038)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1038` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ad1eb51d83cdbb5", "name": "Dangling fetch: POST /api/trips/999/dispute (tests/integration/trips-routes-contracts.test.ts:1052)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/999/dispute (tests/integration/trips-routes-contracts.test.ts:1052)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1052` calls `POST /api/trips/999/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df431fe9f556d081", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1068)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1068)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1068` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c349f2986376c3d0", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1094)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1094)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1094` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8f8e736c7c7a535a", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1118)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1118)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1118` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f88b87d31587b3de", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1145)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1145)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1145` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d6e05cd90ba7702", "name": "Dangling fetch: POST /api/trips/not-a-number/dispute (tests/integration/trips-routes-contracts.test.ts:1158)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/not-a-number/dispute (tests/integration/trips-routes-contracts.test.ts:1158)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1158` calls `POST /api/trips/not-a-number/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/not-a-number/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a03ebc065d91d713", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1185)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1185)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1185` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3168c8b336b963d4", "name": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1217)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1217)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1217` calls `POST /api/trips/1/dispute` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/dispute`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61b7fe6ce54a5803", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1243)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1243)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1243` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6db8c189282585f5", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1268)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1268)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1268` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fce4de4adcb9f48", "name": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1304)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1304)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1304` calls `POST /api/trips/2/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7745767132f3f4b2", "name": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1324)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1324)"}, "fullDescription": {"text": "`tests/integration/trips-routes-contracts.test.ts:1324` calls `POST /api/trips/2/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a9fe8ad1d667fa0", "name": "Dangling fetch: GET /api/auth/apple/callback?code=abc123&state=missing (tests/integration/roadmap-contracts.test.ts:567)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/apple/callback?code=abc123&state=missing (tests/integration/roadmap-contracts.test.ts:567)"}, "fullDescription": {"text": "`tests/integration/roadmap-contracts.test.ts:567` calls `GET /api/auth/apple/callback?code=abc123&state=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/apple/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-26cb670fba14fe1d", "name": "Dangling fetch: GET /api/auth/apple/callback?code=ok-code&state=good-state (tests/integration/roadmap-contracts.test.ts:", "shortDescription": {"text": "Dangling fetch: GET /api/auth/apple/callback?code=ok-code&state=good-state (tests/integration/roadmap-contracts.test.ts:614)"}, "fullDescription": {"text": "`tests/integration/roadmap-contracts.test.ts:614` calls `GET /api/auth/apple/callback?code=ok-code&state=good-state` 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/apple/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-4011e88e6b87f37e", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:384)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:384)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:384` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ca4d00cc51a8e53", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:416)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:416)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:416` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e46170e2cc22a16", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:456)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:456)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:456` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f6ac4133a942b7a", "name": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:513)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:513)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:513` calls `POST /api/trips/offer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/offer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-157e2ed55013b31c", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:533)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:533)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:533` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c9b5110cc78c019", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:562)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:562)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:562` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49b61a6a4ba20a2c", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:585)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:585)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:585` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-134312e6b9086ff9", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:621)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:621)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:621` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7143af70f7426366", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:648)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:648)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:648` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71210d1101d21512", "name": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:676)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:676)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:676` calls `POST /api/trips/1/book` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/book`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-89459c825c9ad48f", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:704)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:704)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:704` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-3af4abfb27ee1f82", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:737)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:737)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:737` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-1117ac9aa804ffb2", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:778)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:778)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:778` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-98c289dc33125486", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:817)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:817)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:817` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-89064e49d4ac1924", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:864)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:864)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:864` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-367f20edb3d76ba6", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:887)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:887)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:887` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-0eea5e749371f7bf", "name": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:919)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:919)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:919` calls `POST /api/trips/1/bookings/2/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: `/trips/<p>/bookings/<p>/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-b07529926c0fe7e9", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:941)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:941)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:941` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b11ab387c152d9cf", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:970)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:970)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:970` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b89bd7f9eab626e", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1007)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1007)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1007` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be81359d1f29835b", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1014)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1014)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1014` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efbc35a90a12a2ac", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1052)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1052)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1052` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4707aa29b74d69d", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1063)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1063)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1063` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23f457d72b85e5cb", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1082)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1082)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1082` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d10ed3daf7b38365", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1110)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1110)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1110` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f0581da46507ce7", "name": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1128)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1128)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1128` calls `POST /api/trips/1/bookings/2/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/bookings/<p>/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8712d314c6930df", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1152)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1152)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1152` calls `POST /api/trips/1/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: `/trips/<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-2b446a4cec6cb395", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1176)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1176)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1176` calls `POST /api/trips/1/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: `/trips/<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-2beaab910a56f6c9", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1201)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1201)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1201` calls `POST /api/trips/1/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: `/trips/<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-0a3de449e707a3aa", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1237)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1237)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1237` calls `POST /api/trips/1/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: `/trips/<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-c0c5c9df1afcc0c8", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1244)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1244)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1244` calls `POST /api/trips/1/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: `/trips/<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-94b1b601a35c280d", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1285)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1285)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1285` calls `POST /api/trips/1/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: `/trips/<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-f10fdcf5319fbd77", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1292)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1292)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1292` calls `POST /api/trips/1/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: `/trips/<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-57c0d488010560ac", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1307)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1307)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1307` calls `POST /api/trips/1/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: `/trips/<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-e0718a7a2c39681b", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1335)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1335)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1335` calls `POST /api/trips/1/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: `/trips/<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-7b9b251ed1a67bc8", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1368)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1368)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1368` calls `POST /api/trips/1/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: `/trips/<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-84d7ccc0613f9907", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1427)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1427)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1427` calls `POST /api/trips/1/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: `/trips/<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-73a0d78cebe64bc1", "name": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1445)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1445)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1445` calls `POST /api/trips/1/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: `/trips/<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-3b786881d93faa20", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1469)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1469)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1469` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4f8627d3bf757260", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1500)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1500)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1500` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ce5e0fa958e3d33", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1520)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1520)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1520` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2db72f246d90479a", "name": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1548)", "shortDescription": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1548)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1548` calls `POST /api/trips/1/rate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/rate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-989c998ce705d376", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1569)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1569)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1569` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-064132e187495435", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1588)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1588)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1588` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6f3b5cdeba54de41", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1612)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1612)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1612` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00a0cbd50932772b", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1639)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1639)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1639` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a2f8be237274aeeb", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1689)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1689)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1689` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d769605aee500c52", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1741)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1741)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1741` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c837fb3d52c88058", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1802)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1802)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1802` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53703bd29d91ab53", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1831)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1831)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1831` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c975b5ddb868d578", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1853)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1853)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1853` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9f84721a9eb208d", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1882)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1882)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1882` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0d667027c6afccd", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1911)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1911)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1911` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1928f54cb2b9a264", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1934)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1934)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1934` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0837545d83907652", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1970)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1970)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:1970` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ffac40d6a599983d", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2019)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2019)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2019` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-950cf9eb122b05e5", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2071)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2071)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2071` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-122a7be54ae3911c", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2130)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2130)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2130` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-229c8fe20696d5b1", "name": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2151)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2151)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2151` calls `POST /api/payments/intent` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/intent`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-058ea59e9f88941b", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2192)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2192)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2192` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-af391e4c2af94690", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2250)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2250)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2250` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa9d9e0ca6cc8806", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2290)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2290)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2290` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5343a9eb7f6a7d1c", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2330)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2330)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2330` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e29ec1132ecfbd0", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2370)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2370)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2370` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e4b2c5f074361f6", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2419)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2419)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2419` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a38f339d114ad8b", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2442)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2442)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2442` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67ec273812db0355", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2490)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2490)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2490` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00d5c3ac847d66bf", "name": "Dangling fetch: GET /api/matching/config (tests/integration/security-hardening.test.ts:2521)", "shortDescription": {"text": "Dangling fetch: GET /api/matching/config (tests/integration/security-hardening.test.ts:2521)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2521` calls `GET /api/matching/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: `/matching/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-92138133e77202bc", "name": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2562)", "shortDescription": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2562)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2562` calls `PUT /api/matching/driver-trips/trip-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: `/matching/driver-trips/trip-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-a2c0f66106cc3c28", "name": "Dangling fetch: GET /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2613)", "shortDescription": {"text": "Dangling fetch: GET /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2613)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2613` calls `GET /api/matching/driver-trips/trip-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: `/matching/driver-trips/trip-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-69f1e63cf3ded1d5", "name": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2632)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2632)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2632` calls `POST /api/matching/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: `/matching/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-a52db98b434e776e", "name": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2692)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2692)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2692` calls `POST /api/matching/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: `/matching/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-ca69b4e2b981e26f", "name": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:2719)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:2719)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:2719` calls `POST /api/matching/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9471ac559a21f674", "name": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3207)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3207)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3207` calls `POST /api/matching/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a83a38e728c44291", "name": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3244)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3244)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3244` calls `POST /api/matching/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ebecfa929a89d437", "name": "Dangling fetch: GET /api/monitoring/sla (tests/integration/security-hardening.test.ts:3279)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/security-hardening.test.ts:3279)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3279` calls `GET /api/monitoring/sla` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/sla`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7c67949e3546b2f6", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3288)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3288)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3288` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c8faf3b4aae156d", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3319)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3319)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3319` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17adf7fc573a769d", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3344)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3344)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3344` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0d74bc938e06d1d8", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3392)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3392)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3392` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c5ec348b430c350", "name": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3452)", "shortDescription": {"text": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3452)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3452` calls `DELETE /api/users/account` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37612511c3206374", "name": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3487)", "shortDescription": {"text": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3487)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3487` calls `DELETE /api/users/account` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c2ff1cc6c4401483", "name": "Dangling fetch: PUT /api/admin/users/55 (tests/integration/security-hardening.test.ts:3502)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/55 (tests/integration/security-hardening.test.ts:3502)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3502` calls `PUT /api/admin/users/55` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/admin/users/<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-008a107518755b70", "name": "Dangling fetch: PUT /api/admin/users/2 (tests/integration/security-hardening.test.ts:3527)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/users/2 (tests/integration/security-hardening.test.ts:3527)"}, "fullDescription": {"text": "`tests/integration/security-hardening.test.ts:3527` calls `PUT /api/admin/users/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: `/admin/users/<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-5310c74a98f1460e", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:130)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:130)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:130` calls `GET /api/monitoring/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: `/monitoring/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-6df8ee25829641ac", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:141)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:141)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:141` calls `GET /api/monitoring/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: `/monitoring/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-22f957f42047b3e2", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:166)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:166)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:166` calls `GET /api/monitoring/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: `/monitoring/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-bac1f2e27cd77bc7", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:179)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:179)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:179` calls `GET /api/monitoring/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: `/monitoring/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-0ab3b0ce0b06eb72", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:191)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:191)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:191` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a682c8c486e3065", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:202)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:202)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:202` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50bf47cb47b6cf60", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:221)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:221)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:221` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8225c897d9302741", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:268)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:268)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:268` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59a707bb83cce1ed", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:285)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:285)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:285` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c34735f89524e61", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:306)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:306)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:306` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b68c6581f3c299f", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:315)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:315)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:315` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26cc7b07aa21674e", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:334)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:334)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:334` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-938c825e6e2cc76e", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:377)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:377)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:377` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b4747c5c032a4a1", "name": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:393)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:393)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:393` calls `GET /api/monitoring/security` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/security`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c4dce1a31e14e5e", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:412)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:412)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:412` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d37f30aad407e66b", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:421)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:421)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:421` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c348625e6bc72b5", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:439)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:439)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:439` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c5e71a48b039410", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:482)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:482)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:482` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23b3917d00c8e356", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:503)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:503)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:503` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7adfcc8163d4d188", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:527)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:527)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:527` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19d408dc5b8329b2", "name": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:553)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:553)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:553` calls `GET /api/monitoring/providers` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/providers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1a463eac6faed8a", "name": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:567)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:567)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:567` calls `GET /api/monitoring/metrics` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/metrics`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8ca49183b88357e9", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:596)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:596)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:596` calls `GET /api/monitoring/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: `/monitoring/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-fccfd6112f11ea72", "name": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:608)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:608)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:608` calls `GET /api/monitoring/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: `/monitoring/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-56f5f06c38901c27", "name": "Dangling fetch: GET /api/monitoring/.well-known/security.txt (tests/integration/monitoring-routes-contracts.test.ts:618)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/.well-known/security.txt (tests/integration/monitoring-routes-contracts.test.ts:618)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:618` calls `GET /api/monitoring/.well-known/security.txt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/.well-known/security.txt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe335928619063bf", "name": "Dangling fetch: GET /api/monitoring/humans.txt (tests/integration/monitoring-routes-contracts.test.ts:626)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/humans.txt (tests/integration/monitoring-routes-contracts.test.ts:626)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:626` calls `GET /api/monitoring/humans.txt` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/humans.txt`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e67218f50c559bf2", "name": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:641)", "shortDescription": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:641)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:641` calls `POST /api/monitoring/csp-report` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/csp-report`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4fafb100b2f0f12a", "name": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:654)", "shortDescription": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:654)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:654` calls `POST /api/monitoring/csp-report` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/csp-report`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8df26b71059ff56", "name": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:667)", "shortDescription": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:667)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:667` calls `POST /api/monitoring/csp-report` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/csp-report`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34db7c4b0ba61572", "name": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:682)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:682)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:682` calls `GET /api/monitoring/sla` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/sla`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b98da245fdcb4a50", "name": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:692)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:692)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:692` calls `GET /api/monitoring/sla` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/sla`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84a38a832c489643", "name": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:707)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:707)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:707` calls `GET /api/monitoring/sla` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/sla`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e7f3d4f86db2250", "name": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:719)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:719)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:719` calls `GET /api/monitoring/performance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/performance`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04dfeeb2236ff3a8", "name": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:734)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:734)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:734` calls `GET /api/monitoring/performance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/performance`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94132e5694116cc9", "name": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:743)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:743)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:743` calls `GET /api/monitoring/errors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/errors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-442d3a596a77b3b3", "name": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:758)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:758)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:758` calls `GET /api/monitoring/errors` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/errors`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c10a96256f1cabcc", "name": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:767)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:767)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:767` calls `GET /api/monitoring/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee5069f69d95f89e", "name": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:781)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:781)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:781` calls `GET /api/monitoring/alerts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/alerts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48474a2403e4867f", "name": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:790)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:790)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:790` calls `GET /api/monitoring/carbon` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/carbon`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2308468a51aba7cb", "name": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:805)", "shortDescription": {"text": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:805)"}, "fullDescription": {"text": "`tests/integration/monitoring-routes-contracts.test.ts:805` calls `GET /api/monitoring/carbon` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/monitoring/carbon`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b53a88a06b8af4f", "name": "Dangling fetch: PUT /api/admin/documents/abc (tests/integration/documents-routes-contracts.test.ts:851)", "shortDescription": {"text": "Dangling fetch: PUT /api/admin/documents/abc (tests/integration/documents-routes-contracts.test.ts:851)"}, "fullDescription": {"text": "`tests/integration/documents-routes-contracts.test.ts:851` calls `PUT /api/admin/documents/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: `/admin/documents/abc`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c4f745d5a8a4e6f3", "name": "Dangling fetch: GET /api/trips/22/messages/since/2026-04-03T09:00:00.000Z (tests/integration/messages-routes-contracts.t", "shortDescription": {"text": "Dangling fetch: GET /api/trips/22/messages/since/2026-04-03T09:00:00.000Z (tests/integration/messages-routes-contracts.test.ts:172)"}, "fullDescription": {"text": "`tests/integration/messages-routes-contracts.test.ts:172` calls `GET /api/trips/22/messages/since/2026-04-03T09:00:00.000Z` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/trips/<p>/messages/since/2026-04-03t09:00:00.000z`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a04f94642c9f5fe8", "name": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:116)", "shortDescription": {"text": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:116)"}, "fullDescription": {"text": "`tests/integration/user-preferences.test.ts:116` calls `GET /api/users/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: `/users/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-3268e87455ba764f", "name": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:140)", "shortDescription": {"text": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:140)"}, "fullDescription": {"text": "`tests/integration/user-preferences.test.ts:140` calls `PUT /api/users/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: `/users/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-fd05d8ffcbc078a5", "name": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:190)", "shortDescription": {"text": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:190)"}, "fullDescription": {"text": "`tests/integration/user-preferences.test.ts:190` calls `PUT /api/users/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: `/users/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-affa22f067d3603e", "name": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:206)", "shortDescription": {"text": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:206)"}, "fullDescription": {"text": "`tests/integration/user-preferences.test.ts:206` calls `GET /api/users/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: `/users/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-485a9fc0fede01e8", "name": "Dangling fetch: GET /api/users/export (tests/integration/audit-taxonomy-contracts.test.ts:245)", "shortDescription": {"text": "Dangling fetch: GET /api/users/export (tests/integration/audit-taxonomy-contracts.test.ts:245)"}, "fullDescription": {"text": "`tests/integration/audit-taxonomy-contracts.test.ts:245` calls `GET /api/users/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e37b24a7ab5c4b0", "name": "Dangling fetch: POST /api/matching/reject (tests/integration/audit-taxonomy-contracts.test.ts:366)", "shortDescription": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/audit-taxonomy-contracts.test.ts:366)"}, "fullDescription": {"text": "`tests/integration/audit-taxonomy-contracts.test.ts:366` calls `POST /api/matching/reject` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/matching/reject`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf54d269c94a6445", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:414)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:414)"}, "fullDescription": {"text": "`tests/integration/audit-taxonomy-contracts.test.ts:414` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-754e036fe2a64af4", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:435)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:435)"}, "fullDescription": {"text": "`tests/integration/audit-taxonomy-contracts.test.ts:435` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8dbd1a4787fc53f", "name": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:457)", "shortDescription": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:457)"}, "fullDescription": {"text": "`tests/integration/audit-taxonomy-contracts.test.ts:457` calls `POST /api/payments/webhook` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/payments/webhook`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5da8adc354ed8dd9", "name": "Dangling fetch: PATCH /api/notifications/1/read (tests/integration/notifications-routes.test.ts:188)", "shortDescription": {"text": "Dangling fetch: PATCH /api/notifications/1/read (tests/integration/notifications-routes.test.ts:188)"}, "fullDescription": {"text": "`tests/integration/notifications-routes.test.ts:188` calls `PATCH /api/notifications/1/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/<p>/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-35aa9c3f293a8b93", "name": "Dangling fetch: PATCH /api/notifications/999/read (tests/integration/notifications-routes.test.ts:205)", "shortDescription": {"text": "Dangling fetch: PATCH /api/notifications/999/read (tests/integration/notifications-routes.test.ts:205)"}, "fullDescription": {"text": "`tests/integration/notifications-routes.test.ts:205` calls `PATCH /api/notifications/999/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/<p>/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-44e0422c2aeee1df", "name": "Dangling fetch: PATCH /api/notifications/7/read (tests/integration/notifications-routes.test.ts:307)", "shortDescription": {"text": "Dangling fetch: PATCH /api/notifications/7/read (tests/integration/notifications-routes.test.ts:307)"}, "fullDescription": {"text": "`tests/integration/notifications-routes.test.ts:307` calls `PATCH /api/notifications/7/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/<p>/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-206af509d94fb230", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:127)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:127)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:127` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f3cc62d74a3986f1", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:137)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:137)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:137` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e40900331f9ad4da", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:149)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:149)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:149` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2b42aed3250988be", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:164)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:164)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:164` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-941b17fac2166934", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:181)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:181)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:181` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b481ed302072a16c", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:196)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:196)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:196` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d19e3f42b753d6f", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:211)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:211)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:211` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-deb36dac5c0b015e", "name": "Dangling fetch: GET /api/users/7/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:229)", "shortDescription": {"text": "Dangling fetch: GET /api/users/7/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:229)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:229` calls `GET /api/users/7/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-abcb7ad41d77e549", "name": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:245)", "shortDescription": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:245)"}, "fullDescription": {"text": "`tests/integration/carbon-certificate-contracts.test.ts:245` calls `GET /api/users/42/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-098a6328285f06c4", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:147)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:147)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:147` calls `POST /api/push/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: `/push/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-846cd230d9fba3ef", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:164)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:164)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:164` calls `POST /api/push/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: `/push/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-0e8439f3ea422d13", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:600)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:600)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:600` calls `POST /api/push/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: `/push/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-81326ce181cbeb94", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:623)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:623)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:623` calls `POST /api/push/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: `/push/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-c9d4e909dcb803e5", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:645)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:645)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:645` calls `POST /api/push/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: `/push/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-cca3ac744bba764b", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:667)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:667)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:667` calls `POST /api/push/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: `/push/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-f38e7467a4af0ef1", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:687)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:687)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:687` calls `POST /api/push/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: `/push/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-e4db9c26a56228aa", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:708)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:708)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:708` calls `POST /api/push/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: `/push/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-ede2906df878f732", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:733)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:733)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:733` calls `POST /api/push/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: `/push/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-88d3176785ff9778", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:764)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:764)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:764` calls `POST /api/push/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: `/push/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-37932cae4269de74", "name": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:799)", "shortDescription": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:799)"}, "fullDescription": {"text": "`tests/integration/push-routes-contracts.test.ts:799` calls `POST /api/push/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: `/push/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-03a5b786f20ecba0", "name": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:110)", "shortDescription": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:110)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:110` calls `GET /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-353144239d3b2691", "name": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:138)", "shortDescription": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:138)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:138` calls `POST /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a217990f2ce8e47d", "name": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:161)", "shortDescription": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:161)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:161` calls `POST /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a4edaf22e1a58ba", "name": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:204)", "shortDescription": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:204)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:204` calls `POST /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61afb83157b56970", "name": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:256)", "shortDescription": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:256)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:256` calls `POST /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b728f25502f81b12", "name": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:287)", "shortDescription": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:287)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:287` calls `GET /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-767107566b3178df", "name": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:303)", "shortDescription": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:303)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:303` calls `GET /api/users/me/cookies` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/me/cookies`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9accfb1c2f63d429", "name": "Dangling fetch: GET /api/users/preferences (tests/unit/users.test.ts:324)", "shortDescription": {"text": "Dangling fetch: GET /api/users/preferences (tests/unit/users.test.ts:324)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:324` calls `GET /api/users/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: `/users/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-98f320d8138702bf", "name": "Dangling fetch: PUT /api/users/preferences (tests/unit/users.test.ts:354)", "shortDescription": {"text": "Dangling fetch: PUT /api/users/preferences (tests/unit/users.test.ts:354)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:354` calls `PUT /api/users/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: `/users/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-deafebb5f10a97e2", "name": "Dangling fetch: GET /api/users/export (tests/unit/users.test.ts:415)", "shortDescription": {"text": "Dangling fetch: GET /api/users/export (tests/unit/users.test.ts:415)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:415` calls `GET /api/users/export` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/export`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a298b743fc440ff7", "name": "Dangling fetch: DELETE /api/users/account (tests/unit/users.test.ts:460)", "shortDescription": {"text": "Dangling fetch: DELETE /api/users/account (tests/unit/users.test.ts:460)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:460` calls `DELETE /api/users/account` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/account`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-33094e7bbf40eaaf", "name": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:482)", "shortDescription": {"text": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:482)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:482` calls `GET /api/users/10/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18a4e1b04e0a4a1b", "name": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:507)", "shortDescription": {"text": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:507)"}, "fullDescription": {"text": "`tests/unit/users.test.ts:507` calls `GET /api/users/10/carbon-certificate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/users/<p>/carbon-certificate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02a95de2f1478d77", "name": "Dangling fetch: GET https://api.stripe.com/v1/healthcheck (src/lib/synthetic.ts:200)", "shortDescription": {"text": "Dangling fetch: GET https://api.stripe.com/v1/healthcheck (src/lib/synthetic.ts:200)"}, "fullDescription": {"text": "`src/lib/synthetic.ts:200` calls `GET https://api.stripe.com/v1/healthcheck` 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.stripe.com/v1/healthcheck`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-127c2b96760f5b05", "name": "Dangling fetch: GET https://api.sendgrid.com/v3/user/profile (src/lib/synthetic.ts:228)", "shortDescription": {"text": "Dangling fetch: GET https://api.sendgrid.com/v3/user/profile (src/lib/synthetic.ts:228)"}, "fullDescription": {"text": "`src/lib/synthetic.ts:228` calls `GET https://api.sendgrid.com/v3/user/profile` 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.sendgrid.com/v3/user/profile`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-67ff31d97dcdeefb", "name": "Dangling fetch: GET https://haveibeenpwned.com/api/v3/breachedaccount/${encodeURIComponent(email)} (src/lib/hibp.ts:141)", "shortDescription": {"text": "Dangling fetch: GET https://haveibeenpwned.com/api/v3/breachedaccount/${encodeURIComponent(email)} (src/lib/hibp.ts:141)"}, "fullDescription": {"text": "`src/lib/hibp.ts:141` calls `GET https://haveibeenpwned.com/api/v3/breachedaccount/${encodeURIComponent(email)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/haveibeenpwned.com/api/v3/breachedaccount/<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-cdc5171ea9818382", "name": "Unused endpoint: GET /admin/promo-codes", "shortDescription": {"text": "Unused endpoint: GET /admin/promo-codes"}, "fullDescription": {"text": "`public/static/js/admin.js` declares `GET /admin/promo-codes` 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-6e8d9c70caed908e", "name": "Unused endpoint: POST /admin/promo-codes", "shortDescription": {"text": "Unused endpoint: POST /admin/promo-codes"}, "fullDescription": {"text": "`public/static/js/admin.js` declares `POST /admin/promo-codes` 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-fca649d6ac969649", "name": "Unused endpoint: GET /admin/analytics/trips-over-time", "shortDescription": {"text": "Unused endpoint: GET /admin/analytics/trips-over-time"}, "fullDescription": {"text": "`public/static/js/admin.js` declares `GET /admin/analytics/trips-over-time` 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-b36892106ecdc9aa", "name": "Unused endpoint: POST /auth/refresh", "shortDescription": {"text": "Unused endpoint: POST /auth/refresh"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/refresh` 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-09cf4d1f2a016fd7", "name": "Unused endpoint: POST /users/tos-accept", "shortDescription": {"text": "Unused endpoint: POST /users/tos-accept"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /users/tos-accept` 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-b42c08955d435b40", "name": "Unused endpoint: POST /auth/mfa/setup", "shortDescription": {"text": "Unused endpoint: POST /auth/mfa/setup"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/mfa/setup` 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-4b8d96c1b050d1a4", "name": "Unused endpoint: POST /auth/mfa/confirm", "shortDescription": {"text": "Unused endpoint: POST /auth/mfa/confirm"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/mfa/confirm` 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-c13e173efffb4a33", "name": "Unused endpoint: POST /auth/mfa/disable", "shortDescription": {"text": "Unused endpoint: POST /auth/mfa/disable"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/mfa/disable` 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-d0d917091975d243", "name": "Unused endpoint: POST /subscriptions/", "shortDescription": {"text": "Unused endpoint: POST /subscriptions/"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /subscriptions/` 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-d695ff901caf3597", "name": "Unused endpoint: GET /subscriptions/", "shortDescription": {"text": "Unused endpoint: GET /subscriptions/"}, "fullDescription": {"text": "`public/static/js/app.js` declares `GET /subscriptions/` 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-e2fe5b92648ca462", "name": "Unused endpoint: POST /auth/forgot-password", "shortDescription": {"text": "Unused endpoint: POST /auth/forgot-password"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/forgot-password` 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-deb8df763a50c73a", "name": "Unused endpoint: POST /auth/reset-password", "shortDescription": {"text": "Unused endpoint: POST /auth/reset-password"}, "fullDescription": {"text": "`public/static/js/app.js` declares `POST /auth/reset-password` 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-f8e95a01bfd05f17", "name": "Unused endpoint: GET /fee-allocations/sent", "shortDescription": {"text": "Unused endpoint: GET /fee-allocations/sent"}, "fullDescription": {"text": "`public/static/js/app.js` declares `GET /fee-allocations/sent` 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-b8073f7bf758f6d0", "name": "Unused endpoint: USE /api/*", "shortDescription": {"text": "Unused endpoint: USE /api/*"}, "fullDescription": {"text": "`src/index.tsx` 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-99719004fc06730e", "name": "Unused endpoint: USE /auth/login", "shortDescription": {"text": "Unused endpoint: USE /auth/login"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/login` 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-fd401363e4083fa1", "name": "Unused endpoint: USE /auth/register", "shortDescription": {"text": "Unused endpoint: USE /auth/register"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/register` 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-6dc2198c82eb3c8b", "name": "Unused endpoint: USE /auth/forgot-password", "shortDescription": {"text": "Unused endpoint: USE /auth/forgot-password"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/forgot-password` 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-44462ba5247ee446", "name": "Unused endpoint: USE /auth/reset-password", "shortDescription": {"text": "Unused endpoint: USE /auth/reset-password"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/reset-password` 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-7da6c0fc18a884bb", "name": "Unused endpoint: USE /auth/refresh", "shortDescription": {"text": "Unused endpoint: USE /auth/refresh"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/refresh` 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-6bd096c558658435", "name": "Unused endpoint: USE /auth/mfa/verify", "shortDescription": {"text": "Unused endpoint: USE /auth/mfa/verify"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/mfa/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-aa40518ca2adfe62", "name": "Unused endpoint: USE /auth/mfa/backup", "shortDescription": {"text": "Unused endpoint: USE /auth/mfa/backup"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /auth/mfa/backup` 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-9312bc8d9a2f4a5a", "name": "Unused endpoint: USE /payments/*", "shortDescription": {"text": "Unused endpoint: USE /payments/*"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /payments/*` 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-41ca327521509571", "name": "Unused endpoint: USE /matching/find", "shortDescription": {"text": "Unused endpoint: USE /matching/find"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /matching/find` 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-22e3b0afc42af433", "name": "Unused endpoint: USE /matching/find-pool", "shortDescription": {"text": "Unused endpoint: USE /matching/find-pool"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /matching/find-pool` 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-0e7701672d37d530", "name": "Unused endpoint: USE /notifications/*", "shortDescription": {"text": "Unused endpoint: USE /notifications/*"}, "fullDescription": {"text": "`src/index.tsx` declares `USE /notifications/*` 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-b16f438a5df00133", "name": "Unused endpoint: GET /humans.txt", "shortDescription": {"text": "Unused endpoint: GET /humans.txt"}, "fullDescription": {"text": "`src/index.tsx` declares `GET /humans.txt` 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-5cd6f90da6082d60", "name": "Unused endpoint: POST /api/events/token", "shortDescription": {"text": "Unused endpoint: POST /api/events/token"}, "fullDescription": {"text": "`src/index.tsx` declares `POST /api/events/token` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32af5edd087acbbc", "name": "Unused endpoint: GET /api/events", "shortDescription": {"text": "Unused endpoint: GET /api/events"}, "fullDescription": {"text": "`src/index.tsx` declares `GET /api/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/index.tsx` 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-9df76717b41aef91", "name": "Unused endpoint: GET /admin/*", "shortDescription": {"text": "Unused endpoint: GET /admin/*"}, "fullDescription": {"text": "`src/index.tsx` declares `GET /admin/*` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31b172e2a3f90ce1", "name": "Unused endpoint: GET /landing", "shortDescription": {"text": "Unused endpoint: GET /landing"}, "fullDescription": {"text": "`src/index.tsx` declares `GET /landing` 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-2b5d2434b2fc80e2", "name": "Unused endpoint: USE /api/trips/search", "shortDescription": {"text": "Unused endpoint: USE /api/trips/search"}, "fullDescription": {"text": "`src/middleware/coalesce.ts` declares `USE /api/trips/search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b88c5d0a22d92c9", "name": "Unused endpoint: USE /api/users/profile", "shortDescription": {"text": "Unused endpoint: USE /api/users/profile"}, "fullDescription": {"text": "`src/middleware/coalesce.ts` declares `USE /api/users/profile` 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-6327e7d63f12d827", "name": "Unused endpoint: GET /contacts", "shortDescription": {"text": "Unused endpoint: GET /contacts"}, "fullDescription": {"text": "`src/routes/safety.ts` declares `GET /contacts` 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-4321271f647e2bd0", "name": "Unused endpoint: POST /contacts", "shortDescription": {"text": "Unused endpoint: POST /contacts"}, "fullDescription": {"text": "`src/routes/safety.ts` declares `POST /contacts` 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-02a10967349d1182", "name": "Unused endpoint: DELETE /contacts/:id", "shortDescription": {"text": "Unused endpoint: DELETE /contacts/:id"}, "fullDescription": {"text": "`src/routes/safety.ts` declares `DELETE /contacts/: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-bf5a962fe6c76a44", "name": "Unused endpoint: POST /sos", "shortDescription": {"text": "Unused endpoint: POST /sos"}, "fullDescription": {"text": "`src/routes/safety.ts` declares `POST /sos` 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-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /login` 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-304b6f2b403d93f7", "name": "Unused endpoint: POST /register", "shortDescription": {"text": "Unused endpoint: POST /register"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /register` 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-5b3531962b36673e", "name": "Unused endpoint: GET /verify-email", "shortDescription": {"text": "Unused endpoint: GET /verify-email"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `GET /verify-email` 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-4257ec01219aa99a", "name": "Unused endpoint: POST /forgot-password", "shortDescription": {"text": "Unused endpoint: POST /forgot-password"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /forgot-password` 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-68a5d356c0cac9e3", "name": "Unused endpoint: POST /reset-password", "shortDescription": {"text": "Unused endpoint: POST /reset-password"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /reset-password` 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-bb5bad5a1b88e6c0", "name": "Unused endpoint: POST /mfa/setup", "shortDescription": {"text": "Unused endpoint: POST /mfa/setup"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /mfa/setup` 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-19b6f5942eee7505", "name": "Unused endpoint: POST /mfa/confirm", "shortDescription": {"text": "Unused endpoint: POST /mfa/confirm"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /mfa/confirm` 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-d5b20c1b658dae2b", "name": "Unused endpoint: POST /mfa/verify", "shortDescription": {"text": "Unused endpoint: POST /mfa/verify"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /mfa/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-828fa215fde35bbc", "name": "Unused endpoint: POST /mfa/backup", "shortDescription": {"text": "Unused endpoint: POST /mfa/backup"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /mfa/backup` 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-77e9ee433a6dcaa2", "name": "Unused endpoint: POST /mfa/disable", "shortDescription": {"text": "Unused endpoint: POST /mfa/disable"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /mfa/disable` 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-7ce17d6b092a81ca", "name": "Unused endpoint: POST /refresh", "shortDescription": {"text": "Unused endpoint: POST /refresh"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /refresh` 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-99fc36db98c134ce", "name": "Unused endpoint: POST /logout", "shortDescription": {"text": "Unused endpoint: POST /logout"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `POST /logout` 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-5c5d06c999404370", "name": "Unused endpoint: GET /google", "shortDescription": {"text": "Unused endpoint: GET /google"}, "fullDescription": {"text": "`src/routes/auth.ts` declares `GET /google` 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/23575"}, "properties": {"repository": "zekka-tech/Klubz", "repoUrl": "https://github.com/zekka-tech/Klubz", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: zekka-tech/Klubz"}, "properties": {"repobilityId": 467875, "scanner": "foundry_dataset", "fingerprint": "da542bc65cc2d7de09c893f6d5ee31c3f7e4241cb754716834af4ab2f5398e5d", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1, "security_auth_secret": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 6, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 1, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#5", "issue_number": "5", "quality_tiers": {"unresolved": 3}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-644b5ac1865d1bc5", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 12, "schema_or_data": 4, "ui_or_frontend": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#5\nRepo: zekka-tech/Klubz\nIssue/PR number: 5\nGraph consistency label: needs_more_evidence\nNodes: 15\nEdges: 29\nNode types: {'pr_file': 6, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 6, 'comment_chain_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 3, 'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'schema_or_data': 1, 'ui_or_frontend': 1, 'test_or_ci': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-187119a82850be74", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: zekka-tech/Klubz"}, "properties": {"repobilityId": 467874, "scanner": "foundry_dataset", "fingerprint": "103d49cd8379de1a99d1ab2bace0a30d873e2a6a2d296ef0013bd460457c8483", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 14, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 1, "thread_has_comment_chain": 1, "comment_chain_touches_file": 1, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 10, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#3", "issue_number": "3", "quality_tiers": {"unresolved": 3}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-fb3fadf7cc7084d0", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 4}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#3\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#3\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#3\nRepo: zekka-tech/Klubz\nIssue/PR number: 3\nGraph consistency label: needs_more_evidence\nNodes: 10\nEdges: 14\nNode types: {'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_file': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_touches_file': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ambiguous_needs_more_evidence': 3, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'test_or_ci': 1, 'unlinked_human_feedback': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-671f414c91b84b1b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: zekka-tech/Klubz"}, "properties": {"repobilityId": 450330, "scanner": "foundry_dataset", "fingerprint": "e3ae0916c05eb6f4a70e85a475d693ce31ee7a506b824a5ddc156af4de6d3e52", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 29, "test_ci_gap": 1, "api_or_backend": 14, "docs_or_claims": 18, "schema_or_data": 2, "ui_or_frontend": 23, "source_or_other": 11, "dependency_or_build": 3, "verification_or_tests": 5, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 144, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 117, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#4", "issue_number": "4", "quality_tiers": {"high_confidence": 3, "assumption_check": 1}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e2787b2124a4c50d", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"test_or_ci": 116, "api_or_backend": 56, "docs_or_claims": 72, "schema_or_data": 8, "ui_or_frontend": 92, "source_or_other": 44, "dependency_or_build": 12}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_high_confidence_link\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nIssue/PR number: 4\nGraph consistency label: supported_by_high_confidence_link\nNodes: 117\nEdges: 144\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'test_or_ci': 29, 'ui_or_frontend': 23, 'docs_or_claims': 18, 'api_or_backend': 14, 'source_or_other': 11, 'verification_or_tests': 5, 'dependency_or_build': 3, 'ambiguous_needs_more_evidence': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-9da8829a9f1f2ddb", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: zekka-tech/Klubz"}, "properties": {"repobilityId": 450329, "scanner": "foundry_dataset", "fingerprint": "3dbe7f56d2fd3eb8f44e3d31f5499a8bd727e7c106e142bda886540c0bbeff4d", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"test_or_ci": 1, "api_or_backend": 1, "schema_or_data": 1, "ui_or_frontend": 7, "verification_or_tests": 5, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 50, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 10, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 10, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#1", "issue_number": "1", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-f85518dcc6ce149e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 4, "schema_or_data": 4, "ui_or_frontend": 28}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#1\nRepo: zekka-tech/Klubz\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 10, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 10, 'comment_chain_touches_file': 10, 'issue_chain_touches_file': 10, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'ui_or_frontend': 7, 'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'schema_or_data': 1, 'api_or_backend': 1, 'test_or_ci': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-a06d5af1739c7777", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: zekka-tech/Klubz"}, "properties": {"repobilityId": 440368, "scanner": "foundry_dataset", "fingerprint": "958c2fb30faaf9f8ade427590c188c513ff234063526620c00c7590dbb5a29e0", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "zekka-tech/Klubz#4", "human_labels": ["api_or_backend", "dependency_or_build", "docs_or_claims", "schema_or_data", "source_or_other", "test_ci_gap", "test_or_ci", "ui_or_frontend"], "issue_number": "4", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.9, "repo_full_name": "zekka-tech/Klubz", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-5479a96fa2cf9bc4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 5, "designs": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 100, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 29, "api_or_backend": 14, "docs_or_claims": 18, "schema_or_data": 2, "ui_or_frontend": 23, "source_or_other": 11, "dependency_or_build": 3}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 9, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_high_confidence, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 100\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 11, 'test_or_ci': 29, 'docs_or_claims': 18, 'schema_or_data': 2, 'api_or_backend': 14, 'dependency_or_build': 3, 'ui_or_frontend': 23}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8977038b6ff3ea6d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/zekka-tech/Klubz/pull/4\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: zekka-tech/Klubz\\nAuthor: zekka-tech (User)\\nURL: https://github.com/zekka-tech/Klubz/pull/4\\nTitle: security: production readiness hardening v3.1.0\\nBody:\\n## Summary\\n\\n- **Security hardening**: CSP nonce-based script controls, HIBP fail-open, SKIP_AUTH restricted to dev/test only (blocked on staging), refresh-token family tracking, timing-equalized auth responses\\n- **Auth & sessions**: MFA rate limiting (3 req/15 min), session limit enforced at 5 concurrent (6th login \u2192 403), booking confirmation wrapped in D1 transaction\\n- **Payments & webhooks**: Stripe webhook signature rejection tested (missing/tampered \u2192 400); PayFast ITN MD5 rejection tested (missing/tampered \u2192 403); PayFast webhook excluded from PAYMENTS_ENABLED kill-switch; idempotency-key replay protection\\n- **Cron & resilience**: `retryPendingSubscriptionPayments` added (hourly, escalates to failed after 3h); per-task 25s timeout via `withTimeout()`; cron failure alerting wired\\n- **Performance**: cursor-based pagination on `GET /trips/available`; O(1) Map-based driver lookup (replaces O(n) `.find()` loop); `POST /matching/batch` restricted to admin/super\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-b2628be41d13755d\",\n    \"filename\": \".env.example\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 2,\n    \"deletions\": 1,\n    \"changes\": 3,\n    \"blob_url\": \"https://github.com/zekka-tech/Klubz/blob/38fcdb7c8e488c657ff53c951a6f646af9dcd10d/.env.example\"\n  },\n  {\n    \"id\": \"github-pr-file-file-e63d2668ca7cc10d\",\n    \"filename\": \".env.production.example\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 1,\n    \"changes\": 12,\n    \"blob_url\": \"https://github.co\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "comment-chain-pattern-assumption_checks-4265d0414c4e7595", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: zekka-tech/Klubz"}, "properties": {"repobilityId": 440367, "scanner": "foundry_dataset", "fingerprint": "8526f56e9ed2421658cf548c7436871a149bf986074750c60199c8ce98578992", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "zekka-tech/Klubz#3", "human_labels": ["human_feedback_general", "test_or_ci"], "issue_number": "3", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "zekka-tech/Klubz", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-5b68f092a1f1fb2e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 5, "designs": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 9, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#3\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_needs_classification\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#3\nRepo: zekka-tech/Klubz\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-2f145cedff504fe2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/zekka-tech/Klubz/pull/3\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: zekka-tech/Klubz\\nAuthor: zekka-tech (User)\\nURL: https://github.com/zekka-tech/Klubz/pull/3\\nTitle: Create npm-publish.yml\\nBody:\\n\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-a27c2eeab34bdad1\",\n    \"filename\": \".github/workflows/npm-publish.yml\",\n    \"label\": \"test_or_ci\",\n    \"status\": \"added\",\n    \"additions\": 33,\n    \"deletions\": 0,\n    \"changes\": 33,\n    \"blob_url\": \"https://github.com/zekka-tech/Klubz/blob/7b72914d274ea690b2fd16f72ca58f3a4adc601b/.github%2Fworkflows%2Fnpm-publish.yml\"\n  }\n]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3f0bede47bb22415\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: zekka-tech/Klubz\nGraph label: source_backed_multi_signal_graph\nNodes: 17\nEdges: 26\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 9, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 6, \"artifact_supports_design_schema_api\": 1, \"artifact_supports_verification\": 2, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\": 2, \"repo_has_source_artifact\": 9, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 2, \"designs\": 1, \"docs\": 5, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"fake_real_data_plus_verification_gap\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "comment-chain-pattern-assumption_checks-04296b26d667aafa", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: zekka-tech/Klubz"}, "properties": {"repobilityId": 440366, "scanner": "foundry_dataset", "fingerprint": "34a394bfd05c98d396bd044410d8751a7fa3f61e8d23f5b7dedfedb3a163cb51", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "zekka-tech/Klubz#1", "human_labels": ["api_or_backend", "data_schema_persistence", "schema_or_data", "test_or_ci", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "zekka-tech/Klubz", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-33b12cb047bfb894", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 5, "designs": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 10, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 1, "schema_or_data": 1, "ui_or_frontend": 7}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 9, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nOutcome: ambiguous_needs_more_evidence\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#1\nRepo: zekka-tech/Klubz\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 10\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'schema_or_data': 1, 'ui_or_frontend': 7, 'api_or_backend': 1, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e86431c7dcaa129b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/zekka-tech/Klubz/pull/1\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: zekka-tech/Klubz\\nAuthor: genspark-ai-developer[bot] (Bot)\\nURL: https://github.com/zekka-tech/Klubz/pull/1\\nTitle: feat(matching): Production-grade Smart Trip Pooling Engine\\nBody:\\n## Summary\\n\\nImplements a comprehensive, production-ready ride-matching algorithm for the Klubz enterprise carpooling platform. This is a full smart trip pooling system that runs efficiently on Cloudflare Workers edge infrastructure.\\n\\n## What's Included\\n\\n### Core Matching Engine (`src/lib/matching/`)\\n\\n| File | Purpose | Lines |\\n|------|---------|-------|\\n| `types.ts` | Complete type system (30+ types/interfaces) | ~280 |\\n| `geo.ts` | Geospatial utilities (15+ functions) | ~310 |\\n| `engine.ts` | 3-phase matching algorithm | ~280 |\\n| `optimizer.ts` | Multi-rider pool optimizer | ~250 |\\n| `repository.ts` | D1 database layer with SQL pre-filtering | ~550 |\\n| `index.ts` | Barrel module | ~55 |\\n\\n### Matching Algorithm (3 Phases)\\n1. **Phase 1 - Hard Filters**: Seats, time window, status, organization, driver rating, bounding-box quick-reject\\n2. **Phase 2 - Route Compatibility**: Segment-aware pickup/dropoff distance, direction vali\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-68e58b75f61b105e\",\n    \"filename\": \"migrations/0003_smart_matching.sql\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"added\",\n    \"additions\": 260,\n    \"deletions\": 0,\n    \"changes\": 260,\n    \"blob_url\": \"https://github.com/zekka-tech/Klubz/blob/9aeffc9771055b8d5ced760908f08f357fce2039/migrations%2F0003_smart_matching.sql\"\n  },\n  {\n    \"id\": \"github-pr-file-file-7b6db5c804ce7c9e\",\n    \"filename\": \"src/index.tsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 5,\n    \"deletions\": 0,\n    \"changes\": 5,\n    \"blob_url\": \"https://github.com/ze\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "comment-chain-pattern-assumption_checks-a62270f50abc998c", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: zekka-tech/Klubz"}, "properties": {"repobilityId": 460847, "scanner": "foundry_dataset", "fingerprint": "1ae627f82d76db1d821ca4beafa052d72c7c97d690e894c2336e99596f1b7283", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"test_or_ci": 29, "test_ci_gap": 1, "api_or_backend": 14, "docs_or_claims": 18, "schema_or_data": 2, "ui_or_frontend": 23, "source_or_other": 11, "dependency_or_build": 3, "verification_or_tests": 5, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 144, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 100, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 117, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 100, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#4", "issue_number": "4", "quality_tiers": {"high_confidence": 3, "assumption_check": 1}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a3b8fe8ea208bac5", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {"test_or_ci": 116, "api_or_backend": 56, "docs_or_claims": 72, "schema_or_data": 8, "ui_or_frontend": 92, "source_or_other": 44, "dependency_or_build": 12}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_high_confidence_link\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#4\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#4\nRepo: zekka-tech/Klubz\nIssue/PR number: 4\nGraph consistency label: supported_by_high_confidence_link\nNodes: 117\nEdges: 144\nNode types: {'pr_file': 100, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 100, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'test_or_ci': 29, 'ui_or_frontend': 23, 'docs_or_claims': 18, 'api_or_backend': 14, 'source_or_other': 11, 'verification_or_tests': 5, 'dependency_or_build': 3, 'ambiguous_needs_more_evidence': 3, 'schema_or_data': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-df9b76b9b1e8a940", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: zekka-tech/Klubz"}, "properties": {"repobilityId": 454129, "scanner": "foundry_dataset", "fingerprint": "06e891806673b91895c43188593822dedb5e8214d1c5cdd5e6cd9fc9befd26ef", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"test_or_ci": 1, "api_or_backend": 1, "schema_or_data": 1, "ui_or_frontend": 7, "verification_or_tests": 5, "data_schema_persistence": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "blueprint_human_gap_disagreement": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 50, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 10, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 27, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 10, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#1", "issue_number": "1", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d87adbe95459a492", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 4, "schema_or_data": 4, "ui_or_frontend": 28}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#1\nRepo: zekka-tech/Klubz\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 27\nEdges: 50\nNode types: {'pr_file': 10, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 10, 'comment_chain_touches_file': 10, 'issue_chain_touches_file': 10, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'ui_or_frontend': 7, 'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'schema_or_data': 1, 'api_or_backend': 1, 'test_or_ci': 1, 'comment_has_related_commit_context': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-6c7009c92f16d68f", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: zekka-tech/Klubz"}, "properties": {"repobilityId": 445428, "scanner": "foundry_dataset", "fingerprint": "f01e662350b525cf77206ca7a934afb2719a150800e332f0d43f2c9f73db03eb", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "zekka-tech/Klubz#5", "human_labels": ["api_or_backend", "schema_or_data", "security_auth_secret", "test_or_ci", "ui_or_frontend"], "issue_number": "5", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "zekka-tech/Klubz", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-210918970288fc1e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 2, "docs": 5, "designs": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 6, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 3, "schema_or_data": 1, "ui_or_frontend": 1}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 9, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 2, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#5\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: zekka-tech/Klubz#5\nRepo: zekka-tech/Klubz\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 6\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'schema_or_data': 1, 'api_or_backend': 3, 'ui_or_frontend': 1, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cb6b5d4189ef1497\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/zekka-tech/Klubz/pull/5\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: zekka-tech/Klubz\\nAuthor: zekka-tech (User)\\nURL: https://github.com/zekka-tech/Klubz/pull/5\\nTitle: feat(payments): PayFast support for route change surcharges\\nBody:\\n## Summary\\n\\nEnables **PayFast** bookings to pay route-change surcharges, at parity with the existing Stripe flow. Previously route changes were hard-blocked for PayFast bookings.\\n\\n## Changes\\n- **migrations/0038**: add `payfast_transaction_id`, `payfast_payment_status`, `payment_provider` columns to `trip_route_change_requests` (+ index). Existing rows default to `payment_provider='stripe'`.\\n- **payfast.ts**:\\n  - New `POST /payfast-route-change-init` \u2014 creates a PayFast surcharge payment for a route change in `approved_payment_pending` state and marks the surcharge `pending`.\\n  - Extended ITN webhook to handle `rc_`-prefixed orders: `COMPLETE` applies the route change + bumps `amount_paid`; `PENDING`/`FAILED`/`CANCELLED` update status accordingly.\\n  - **Defense-in-depth**: validate ITN `custom_str1`/`custom_str2`/`custom_int1` against the stored `trip_id`/`rider_id`/`booking_id` (matches Stripe's metadata context check). Returns `400 Context\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-77e34d9c577f4b86\",\n    \"filename\": \"migrations/0038_route_change_payfast.sql\",\n    \"label\": \"schema_or_data\",\n    \"status\": \"added\",\n    \"additions\": 10,\n    \"deletions\": 0,\n    \"changes\": 10,\n    \"blob_url\": \"https://github.com/zekka-tech/Klubz/blob/2def7f2df0601da5e107c978a011311d96e0cbaf/migrations%2F0038_route_change_payfast.sql\"\n  },\n  {\n    \"id\": \"github-pr-file-file-fa8d53b450788f0c\",\n    \"filename\": \"src/routes/payfast.ts\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 397,\n    \"deletions\": 1,\n    \"changes\": 398,\n    \"blob_url\": \"https://github.com/zekk\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "comment-chain-pattern-bad_chains-e1595af7362b8d56", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: zekka-tech/Klubz"}, "properties": {"repobilityId": 452242, "scanner": "foundry_dataset", "fingerprint": "cce5bdb026e8357ad37bbf76113aa72a1d9507d5ed29cb9fe8dc7474efc0f90d", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 2, "test_or_ci": 1, "data_schema": 1, "api_or_backend": 6, "schema_or_data": 1, "ui_or_frontend": 14, "source_or_other": 15, "mock_placeholder": 1, "dependency_or_build": 1, "verification_or_tests": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 77, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 38, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 51, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 38, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "zekka-tech/Klubz#2", "issue_number": "2", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "zekka-tech/Klubz", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-57966e4ee513710b", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 24, "schema_or_data": 4, "ui_or_frontend": 56, "source_or_other": 60, "dependency_or_build": 4}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#2\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: zekka-tech/Klubz\nThread: zekka-tech/Klubz#2\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: zekka-tech/Klubz#2\nRepo: zekka-tech/Klubz\nIssue/PR number: 2\nGraph consistency label: supported_by_verification_signal\nNodes: 51\nEdges: 77\nNode types: {'pr_file': 38, 'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 38, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 4, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'source_or_other': 15, 'ui_or_frontend': 14, 'api_or_backend': 6, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'schema_or_data': 1, 'dependency_or_build': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1, 'data_schema': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/zekka-tech/Klubz", "source_id": "graph-query-motif_query-1d826aa1a4bb622e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "zekka-tech/Klubz", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-4f1056e2000e3243", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/performance-test.js:28"}, "properties": {"repobilityId": "e8a0f765ba46956e", "scanner": "scanner-primary", "fingerprint": "4f1056e2000e3243", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e189f622c6897fea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/test-runner.js:49"}, "properties": {"repobilityId": "9094d62682c65c5e", "scanner": "scanner-primary", "fingerprint": "e189f622c6897fea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-721783e74341c453", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/comprehensive.test.js:25"}, "properties": {"repobilityId": "62b2d42b91c52b6d", "scanner": "scanner-primary", "fingerprint": "721783e74341c453", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7283a88c3c2ec644", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/api.test.js:20"}, "properties": {"repobilityId": "444d51741af2c26d", "scanner": "scanner-primary", "fingerprint": "7283a88c3c2ec644", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7dbb3b429f797d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/ui-contracts.js:48"}, "properties": {"repobilityId": "7d5b2bad1b2c66e6", "scanner": "scanner-primary", "fingerprint": "d7dbb3b429f797d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02eea9b904fecfd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/security-audit.js:27"}, "properties": {"repobilityId": "7267b95b0cbcc592", "scanner": "scanner-primary", "fingerprint": "02eea9b904fecfd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9df6cdff236b22a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/matching.test.js:23"}, "properties": {"repobilityId": "5e652c71fb66cc45", "scanner": "scanner-primary", "fingerprint": "9df6cdff236b22a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b38f58c366320186", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/load/cold-start.js:55"}, "properties": {"repobilityId": "2fdda08571ced1a2", "scanner": "scanner-primary", "fingerprint": "b38f58c366320186", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ff774592857696a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-pwa-icons.js:44"}, "properties": {"repobilityId": "1ba5cf4db6df4055", "scanner": "scanner-primary", "fingerprint": "2ff774592857696a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e37a6527cc5dcc10", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-order.js:62"}, "properties": {"repobilityId": "2e487bde289d6556", "scanner": "scanner-primary", "fingerprint": "e37a6527cc5dcc10", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d4747be493a8f08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-assetlinks-fingerprint.js:35"}, "properties": {"repobilityId": "4e4c07677d48ec1e", "scanner": "scanner-primary", "fingerprint": "9d4747be493a8f08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d43dbf47074bfbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:289"}, "properties": {"repobilityId": "19ecb22d48da856c", "scanner": "scanner-primary", "fingerprint": "0d43dbf47074bfbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d861eceda29e0dd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/static/js/app.js:6006"}, "properties": {"repobilityId": "e2c6d3b62be3472f", "scanner": "scanner-primary", "fingerprint": "d861eceda29e0dd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3f92c93b323a3e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/static/js/payments.js:209"}, "properties": {"repobilityId": "23469772f8b77b5c", "scanner": "scanner-primary", "fingerprint": "f3f92c93b323a3e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bff2164c927d56d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/index.tsx:385"}, "properties": {"repobilityId": "b8d306ad26c7fc71", "scanner": "scanner-primary", "fingerprint": "bff2164c927d56d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-884fb816243b40b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/middleware/security.ts:224"}, "properties": {"repobilityId": "22dc88878b50f313", "scanner": "scanner-primary", "fingerprint": "884fb816243b40b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90861ce51ec52763", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/middleware/auditLogger.ts:80"}, "properties": {"repobilityId": "a66a43affb263790", "scanner": "scanner-primary", "fingerprint": "90861ce51ec52763", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c433f4e9e543151b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/circuitBreaker.ts:170"}, "properties": {"repobilityId": "f4ffe16ac6841669", "scanner": "scanner-primary", "fingerprint": "c433f4e9e543151b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f062ee03c092f6bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/alerting.ts:70"}, "properties": {"repobilityId": "be0ecd970e08f0d3", "scanner": "scanner-primary", "fingerprint": "f062ee03c092f6bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6b2debed32652b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/lib/logger.ts:93"}, "properties": {"repobilityId": "d91dbb6e420e1181", "scanner": "scanner-primary", "fingerprint": "f6b2debed32652b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f64bebd8a863cda", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/generate-pwa-icons.js:3"}, "properties": {"repobilityId": "30bfbdc560f0b993", "scanner": "scanner-primary", "fingerprint": "8f64bebd8a863cda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-pwa-icons.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-59ffbb777067aeb4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/apply-migrations-remote.cjs:2"}, "properties": {"repobilityId": "3ccce1e7b8f255d4", "scanner": "scanner-primary", "fingerprint": "59ffbb777067aeb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/apply-migrations-remote.cjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-cfd1a4ecb35869e6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/app.js:332"}, "properties": {"repobilityId": "13aa19877b96eb6f", "scanner": "scanner-primary", "fingerprint": "cfd1a4ecb35869e6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/static/js/app.js"}, "region": {"startLine": 332}}}]}, {"ruleId": "scanner-b01d457f9221a7b6", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in public/static/js/app.js:5484"}, "properties": {"repobilityId": "e973e8370fdac08a", "scanner": "scanner-primary", "fingerprint": "b01d457f9221a7b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/static/js/app.js"}, "region": {"startLine": 5484}}}]}, {"ruleId": "scanner-ce8622ec9a8a1c82", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in public/static/js/app.js:191"}, "properties": {"repobilityId": "0c138c13cef5462a", "scanner": "scanner-primary", "fingerprint": "ce8622ec9a8a1c82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/static/js/app.js"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-29937951994cf900", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/static/js/payments.js:439"}, "properties": {"repobilityId": "57ab5f7d03871836", "scanner": "scanner-primary", "fingerprint": "29937951994cf900", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/static/js/payments.js"}, "region": {"startLine": 439}}}]}, {"ruleId": "scanner-e4ebaae7c854ffde", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/types.ts:15"}, "properties": {"repobilityId": "6f7e240bcf492113", "scanner": "scanner-primary", "fingerprint": "e4ebaae7c854ffde", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/types.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d78ba68d02145596", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in src/routes/auth.ts:1083"}, "properties": {"repobilityId": "a8785bf1f0cfe9d2", "scanner": "scanner-primary", "fingerprint": "d78ba68d02145596", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/routes/auth.ts"}, "region": {"startLine": 1083}}}]}, {"ruleId": "scanner-63e9d48aeec75484", "level": "error", "message": {"text": "Insecure pattern 'private_key_in_repo' in src/routes/auth.ts:232"}, "properties": {"repobilityId": "fc102b201105be4d", "scanner": "scanner-primary", "fingerprint": "63e9d48aeec75484", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["owasp", "private_key_in_repo"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/routes/auth.ts"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-6e097d582622ceef", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4814ddabbb9b4a2b", "scanner": "scanner-primary", "fingerprint": "6e097d582622ceef", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backup-d1.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-6e097d582622ceef", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b2843070865eb51f", "scanner": "scanner-primary", "fingerprint": "6e097d582622ceef", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backup-d1.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-782c386e203cebb9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "039daafaf2f8b5f1", "scanner": "scanner-primary", "fingerprint": "782c386e203cebb9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ios-build.yml"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-782c386e203cebb9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f011d36044d07e8f", "scanner": "scanner-primary", "fingerprint": "782c386e203cebb9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ios-build.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d69831e3305d4c71", "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": 66}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cf144ab9279410fb", "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": 189}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "989a74409a402368", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 327}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 347}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e6c5e7b28b51f18", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe869660bc41da4d", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53e96cca0ae7eb44", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "41a6d1ccaab2d0bb", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "da394abfe6d1d378", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "da394abfe6d1d378", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-c7e881573ce0cc41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "da394abfe6d1d378", "scanner": "scanner-primary", "fingerprint": "c7e881573ce0cc41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/android-build.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-7a8159899de93d69", "level": "note", "message": {"text": "Very large file: tests/matching.test.js (1288 lines)"}, "properties": {"repobilityId": "025ba6739d5320aa", "scanner": "scanner-primary", "fingerprint": "7a8159899de93d69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef62ebb644a3d980", "level": "note", "message": {"text": "Very large file: tests/integration/payments-routes-contracts.test.ts (1679 lines)"}, "properties": {"repobilityId": "6e861d242e3dcf96", "scanner": "scanner-primary", "fingerprint": "ef62ebb644a3d980", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16cc0827972650bd", "level": "note", "message": {"text": "Very large file: tests/integration/trips-routes-contracts.test.ts (1337 lines)"}, "properties": {"repobilityId": "207fdefd1eedcdc3", "scanner": "scanner-primary", "fingerprint": "16cc0827972650bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1049cdcbb06da108", "level": "note", "message": {"text": "Very large file: tests/integration/security-hardening.test.ts (3542 lines)"}, "properties": {"repobilityId": "051a872cd692b4ac", "scanner": "scanner-primary", "fingerprint": "1049cdcbb06da108", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c901a6f236c00e2d", "level": "note", "message": {"text": "Very large file: tests/integration/auth-routes-contracts.test.ts (1305 lines)"}, "properties": {"repobilityId": "dba6eee2f12b3de4", "scanner": "scanner-primary", "fingerprint": "c901a6f236c00e2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9fe216d4a7d3564f", "level": "note", "message": {"text": "Very large file: public/static/js/app.js (6914 lines)"}, "properties": {"repobilityId": "fa80dd16ea4c76e7", "scanner": "scanner-primary", "fingerprint": "9fe216d4a7d3564f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-680f0c0d4f871574", "level": "note", "message": {"text": "Very large file: src/index.tsx (1250 lines)"}, "properties": {"repobilityId": "0a6c800eafc4611d", "scanner": "scanner-primary", "fingerprint": "680f0c0d4f871574", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f0cdcd6db4579f6", "level": "note", "message": {"text": "Very large file: src/routes/auth.ts (2254 lines)"}, "properties": {"repobilityId": "3ac9a0d5d4823c68", "scanner": "scanner-primary", "fingerprint": "1f0cdcd6db4579f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-603da627abb94083", "level": "note", "message": {"text": "Very large file: src/routes/trips.ts (3143 lines)"}, "properties": {"repobilityId": "421ea7d4d91f8994", "scanner": "scanner-primary", "fingerprint": "603da627abb94083", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ae0f3eee4daf7091", "level": "note", "message": {"text": "Very large file: src/routes/users.ts (1444 lines)"}, "properties": {"repobilityId": "109efcd7e21d2aac", "scanner": "scanner-primary", "fingerprint": "ae0f3eee4daf7091", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9436e0d7c9892024", "level": "note", "message": {"text": "Very large file: src/routes/payments.ts (2663 lines)"}, "properties": {"repobilityId": "9c1824b7916d0ff3", "scanner": "scanner-primary", "fingerprint": "9436e0d7c9892024", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7f50ca927ebdb6d9", "level": "note", "message": {"text": "Very large file: src/routes/admin.ts (1798 lines)"}, "properties": {"repobilityId": "7ccbc9c69b1a76cf", "scanner": "scanner-primary", "fingerprint": "7f50ca927ebdb6d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0e125c282e57835f", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "48210a9c4d90adde", "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": "a42ba9da85d7596d", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "ebeebd009c82a72b", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "6b5659371e624471", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "c9559cb92abf6102", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "95a624bd2d904dbe", "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": "8e7af1c66591e48b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e9dbaa4658444c9f", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/matching-repository.test.ts:413"}, "properties": {"repobilityId": "bb9af2efb35e5081", "scanner": "scanner-primary", "fingerprint": "e9dbaa4658444c9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b958e8cfdde2885", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:70"}, "properties": {"repobilityId": "870f90f2f9b3eb22", "scanner": "scanner-primary", "fingerprint": "8b958e8cfdde2885", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-debdb2ed256e328f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/admin.js:35"}, "properties": {"repobilityId": "2db166d95dcb79a5", "scanner": "scanner-primary", "fingerprint": "debdb2ed256e328f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dffb10751d38b67b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/static/js/app.js:141"}, "properties": {"repobilityId": "5f7fc01a747e12b1", "scanner": "scanner-primary", "fingerprint": "dffb10751d38b67b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a6e193eac8d2734", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/middleware/auth.ts:321"}, "properties": {"repobilityId": "1627742072c6522f", "scanner": "scanner-primary", "fingerprint": "1a6e193eac8d2734", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c3dca25c0948ae1", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/middleware/security.ts:14"}, "properties": {"repobilityId": "61cf13d7f24bcb7c", "scanner": "scanner-primary", "fingerprint": "5c3dca25c0948ae1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a3f4db76400b180", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/middleware/rateLimiter.ts:93"}, "properties": {"repobilityId": "2926413b49d59eec", "scanner": "scanner-primary", "fingerprint": "3a3f4db76400b180", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b415ac923ef13213", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/turnstile.ts:42"}, "properties": {"repobilityId": "03ad2a7d1e229738", "scanner": "scanner-primary", "fingerprint": "b415ac923ef13213", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1ca383afe1be341c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/synthetic.ts:200"}, "properties": {"repobilityId": "ee7b19bcf4e7898a", "scanner": "scanner-primary", "fingerprint": "1ca383afe1be341c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e284370719236929", "level": "note", "message": {"text": "Legacy-named symbol `smart_matching_v2` in src/lib/featureFlags.ts:281"}, "properties": {"repobilityId": "b7193d9046506842", "scanner": "scanner-primary", "fingerprint": "e284370719236929", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1b5a76780c3df9aa", "level": "none", "message": {"text": "1 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d04379b337b44a15", "scanner": "scanner-primary", "fingerprint": "1b5a76780c3df9aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-749926bfc4daceea", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/${item.tripId}/rate (public/sw.js:336)"}, "properties": {"repobilityId": "040ec234e5914191", "scanner": "scanner-primary", "fingerprint": "749926bfc4daceea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c7365360eb3bf5b", "level": "error", "message": {"text": "Dangling fetch: GET https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(address)}&format=json&limit=1 (public/static/js/app.js:706)"}, "properties": {"repobilityId": "ed3940a7e335b3a4", "scanner": "scanner-primary", "fingerprint": "2c7365360eb3bf5b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-161b47256d6362e5", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.test.ts:142)"}, "properties": {"repobilityId": "2f26d35724a374d6", "scanner": "scanner-primary", "fingerprint": "161b47256d6362e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-76e0e85f950f4f8d", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/messages/since/not-a-date (tests/integration/messages-enhancements-contracts.test.ts:152)"}, "properties": {"repobilityId": "a17c39068cd2abcf", "scanner": "scanner-primary", "fingerprint": "76e0e85f950f4f8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a20bec206fd0aaf7", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/messages/since/2026-01-01T00:00:00Z (tests/integration/messages-enhancements-contracts.test.ts:183)"}, "properties": {"repobilityId": "c964873dab0d8f4f", "scanner": "scanner-primary", "fingerprint": "a20bec206fd0aaf7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-df7f9a814418a65b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:80)"}, "properties": {"repobilityId": "444236d1ad57df35", "scanner": "scanner-primary", "fingerprint": "df7f9a814418a65b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b2b6c7e922c1423b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/999/complete (tests/integration/trips-extended-contracts.test.ts:91)"}, "properties": {"repobilityId": "795302036a0f85ac", "scanner": "scanner-primary", "fingerprint": "b2b6c7e922c1423b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b1739f9f6debc317", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:109)"}, "properties": {"repobilityId": "016b9fb9d9d4cb76", "scanner": "scanner-primary", "fingerprint": "b1739f9f6debc317", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-413a024b929be58d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:127)"}, "properties": {"repobilityId": "72377fa2b51dc31d", "scanner": "scanner-primary", "fingerprint": "413a024b929be58d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ddede8a42f6126ab", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-extended-contracts.test.ts:163)"}, "properties": {"repobilityId": "4f95617046db89ab", "scanner": "scanner-primary", "fingerprint": "ddede8a42f6126ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-be99b5bac04edf0d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:181)"}, "properties": {"repobilityId": "9be5a3a9675681d6", "scanner": "scanner-primary", "fingerprint": "be99b5bac04edf0d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-984ac75d8ae9925d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:192)"}, "properties": {"repobilityId": "11e19c73fc8b668f", "scanner": "scanner-primary", "fingerprint": "984ac75d8ae9925d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b878e873e97c7728", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:214)"}, "properties": {"repobilityId": "6a958ba49827a09a", "scanner": "scanner-primary", "fingerprint": "b878e873e97c7728", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-23a833dcd697a30e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-extended-contracts.test.ts:239)"}, "properties": {"repobilityId": "219b7a2d4d021b36", "scanner": "scanner-primary", "fingerprint": "23a833dcd697a30e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f5cb6ad1aac1fa03", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:261)"}, "properties": {"repobilityId": "d16457b051821c89", "scanner": "scanner-primary", "fingerprint": "f5cb6ad1aac1fa03", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b6be3d4109ce3a81", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:272)"}, "properties": {"repobilityId": "69ee107841e13393", "scanner": "scanner-primary", "fingerprint": "b6be3d4109ce3a81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e21d5a74fee0769b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:295)"}, "properties": {"repobilityId": "b3e80b783558344a", "scanner": "scanner-primary", "fingerprint": "e21d5a74fee0769b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e7d6bb9bbd5a319c", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:320)"}, "properties": {"repobilityId": "e19091cbcf2d18ea", "scanner": "scanner-primary", "fingerprint": "e7d6bb9bbd5a319c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8273fb56354e8cd0", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:337)"}, "properties": {"repobilityId": "a9566d9aba17aea8", "scanner": "scanner-primary", "fingerprint": "8273fb56354e8cd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d5716609d50b4bda", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-extended-contracts.test.ts:359)"}, "properties": {"repobilityId": "88b61cdbbcb5c8a3", "scanner": "scanner-primary", "fingerprint": "d5716609d50b4bda", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-77faa0133e9bf706", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:378)"}, "properties": {"repobilityId": "35d54417a6bfb39c", "scanner": "scanner-primary", "fingerprint": "77faa0133e9bf706", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-89034f0a42d5bb02", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/999/route (tests/integration/trips-extended-contracts.test.ts:389)"}, "properties": {"repobilityId": "a0baa9e2c6e019b1", "scanner": "scanner-primary", "fingerprint": "89034f0a42d5bb02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5967edb48b9abbba", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:410)"}, "properties": {"repobilityId": "82c9a676889103c0", "scanner": "scanner-primary", "fingerprint": "5967edb48b9abbba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e3bf36df51dbd8e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:428)"}, "properties": {"repobilityId": "a968b934715a2211", "scanner": "scanner-primary", "fingerprint": "e3bf36df51dbd8e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0772e75b434ef682", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/route (tests/integration/trips-extended-contracts.test.ts:450)"}, "properties": {"repobilityId": "6c542e9ff43d0041", "scanner": "scanner-primary", "fingerprint": "0772e75b434ef682", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3ad8ba86f5d0069b", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (tests/integration/trips-extended-contracts.test.ts:473)"}, "properties": {"repobilityId": "bb448beb3d0c1258", "scanner": "scanner-primary", "fingerprint": "3ad8ba86f5d0069b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-221a4a7b362441ce", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2041&pickupLng=28.0473&dropoffLat=-25.7479&dropoffLng=28.2293 (tests/integration/trips-extended-contracts.test.ts:509)"}, "properties": {"repobilityId": "67a181812575beae", "scanner": "scanner-primary", "fingerprint": "221a4a7b362441ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1b712790effaec12", "level": "error", "message": {"text": "Dangling fetch: GET /api/disputes/not-a-number (tests/integration/disputes-routes-contracts.test.ts:636)"}, "properties": {"repobilityId": "ceb29535862a2097", "scanner": "scanner-primary", "fingerprint": "1b712790effaec12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-08646b3cc80bd48f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/disputes/1/status (tests/integration/disputes-routes-contracts.test.ts:704)"}, "properties": {"repobilityId": "c600f668ea9d70d6", "scanner": "scanner-primary", "fingerprint": "08646b3cc80bd48f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d2efb866e658d91e", "level": "error", "message": {"text": "Dangling fetch: PUT /api/disputes/abc/status (tests/integration/disputes-routes-contracts.test.ts:718)"}, "properties": {"repobilityId": "84fc182bfd88f414", "scanner": "scanner-primary", "fingerprint": "d2efb866e658d91e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6067076e78d37a57", "level": "error", "message": {"text": "Dangling fetch: PUT /api/disputes/999/status (tests/integration/disputes-routes-contracts.test.ts:736)"}, "properties": {"repobilityId": "1443e17ec906607c", "scanner": "scanner-primary", "fingerprint": "6067076e78d37a57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3306bb29baac95ee", "level": "error", "message": {"text": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:756)"}, "properties": {"repobilityId": "4dc7907ae19c6add", "scanner": "scanner-primary", "fingerprint": "3306bb29baac95ee", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fb8641ff6770339a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/disputes/5/status (tests/integration/disputes-routes-contracts.test.ts:784)"}, "properties": {"repobilityId": "e8de5b161d93cb99", "scanner": "scanner-primary", "fingerprint": "fb8641ff6770339a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6d5b3a1bd9f0db23", "level": "error", "message": {"text": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:801)"}, "properties": {"repobilityId": "89630b077fef13ae", "scanner": "scanner-primary", "fingerprint": "6d5b3a1bd9f0db23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-716452902e44ef04", "level": "error", "message": {"text": "Dangling fetch: GET /api/disputes/admin/list (tests/integration/disputes-routes-contracts.test.ts:821)"}, "properties": {"repobilityId": "e41cf1651e9b2ba5", "scanner": "scanner-primary", "fingerprint": "716452902e44ef04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83cc49f59fd39c64", "level": "error", "message": {"text": "Dangling fetch: GET /api/disputes/admin/list?status=open (tests/integration/disputes-routes-contracts.test.ts:838)"}, "properties": {"repobilityId": "57d1b57902f3cdf4", "scanner": "scanner-primary", "fingerprint": "83cc49f59fd39c64", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cbf29920e23ef0b4", "level": "error", "message": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:171)"}, "properties": {"repobilityId": "36756a06ebb1ad37", "scanner": "scanner-primary", "fingerprint": "cbf29920e23ef0b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4add8461f88872b9", "level": "error", "message": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:201)"}, "properties": {"repobilityId": "bbb08b226d0b3871", "scanner": "scanner-primary", "fingerprint": "4add8461f88872b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-93841099a101f8b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/fee-allocations/10/accept (tests/integration/fee-allocations.test.ts:243)"}, "properties": {"repobilityId": "e65583ad310172bd", "scanner": "scanner-primary", "fingerprint": "93841099a101f8b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8e46f1a504729c77", "level": "error", "message": {"text": "Dangling fetch: GET /api/matching/rider-requests?status=weird (tests/integration/query-validation-hardening.test.ts:144)"}, "properties": {"repobilityId": "1c7c12716506f161", "scanner": "scanner-primary", "fingerprint": "8e46f1a504729c77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e028101271ff7f12", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:204)"}, "properties": {"repobilityId": "753684b561d38001", "scanner": "scanner-primary", "fingerprint": "e028101271ff7f12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-41044a677b2dcded", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:213)"}, "properties": {"repobilityId": "0c5ff3a74db75db7", "scanner": "scanner-primary", "fingerprint": "41044a677b2dcded", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fa16ab4f400d54ea", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/query-validation-hardening.test.ts:222)"}, "properties": {"repobilityId": "e125edb21335c6c4", "scanner": "scanner-primary", "fingerprint": "fa16ab4f400d54ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b18bbf69b58b09f4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:257)"}, "properties": {"repobilityId": "2769605a08ebabcd", "scanner": "scanner-primary", "fingerprint": "b18bbf69b58b09f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9819731539989212", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/config (tests/integration/query-validation-hardening.test.ts:266)"}, "properties": {"repobilityId": "2c15ed2ccb915e83", "scanner": "scanner-primary", "fingerprint": "9819731539989212", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e47caa98b4c0819", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=200&pickupLng=28&dropoffLat=-26&dropoffLng=28 (tests/integration/query-validation-hardening.test.ts:380)"}, "properties": {"repobilityId": "6f89b71b011a07e9", "scanner": "scanner-primary", "fingerprint": "1e47caa98b4c0819", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-91ecf88538a38117", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/query-validation-hardening.test.ts:404)"}, "properties": {"repobilityId": "a88471ac4c0394fc", "scanner": "scanner-primary", "fingerprint": "91ecf88538a38117", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4df070210916d162", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:111)"}, "properties": {"repobilityId": "e4cc6e95d1124094", "scanner": "scanner-primary", "fingerprint": "4df070210916d162", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-83ef44cbad161984", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts/1 (tests/integration/safety-routes-contracts.test.ts:127)"}, "properties": {"repobilityId": "caf47d47f1649022", "scanner": "scanner-primary", "fingerprint": "83ef44cbad161984", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d55975cd6adbf712", "level": "error", "message": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:146)"}, "properties": {"repobilityId": "88f091e29c533937", "scanner": "scanner-primary", "fingerprint": "d55975cd6adbf712", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7adbd4ddca5318b7", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:161)"}, "properties": {"repobilityId": "8bb7d45fac77161c", "scanner": "scanner-primary", "fingerprint": "7adbd4ddca5318b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5ea6ae73f4fbfb7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:184)"}, "properties": {"repobilityId": "85354dc9698d44fa", "scanner": "scanner-primary", "fingerprint": "5ea6ae73f4fbfb7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90b09672424cbd18", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:207)"}, "properties": {"repobilityId": "e0600d965247dc42", "scanner": "scanner-primary", "fingerprint": "90b09672424cbd18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8d9a2bce6c8cbb3", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:229)"}, "properties": {"repobilityId": "a26556f7fb821245", "scanner": "scanner-primary", "fingerprint": "f8d9a2bce6c8cbb3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-132a702d01ad2362", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:251)"}, "properties": {"repobilityId": "e5cded06e010feb2", "scanner": "scanner-primary", "fingerprint": "132a702d01ad2362", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-18d1273ad490947f", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:280)"}, "properties": {"repobilityId": "48dac5903c7bf9c2", "scanner": "scanner-primary", "fingerprint": "18d1273ad490947f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c4c2245193f8471", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:310)"}, "properties": {"repobilityId": "7d59dc1dd6a1a608", "scanner": "scanner-primary", "fingerprint": "9c4c2245193f8471", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a56d303890c8079", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:339)"}, "properties": {"repobilityId": "8a88094d030d6f68", "scanner": "scanner-primary", "fingerprint": "3a56d303890c8079", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3e6077539a7447d5", "level": "error", "message": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:364)"}, "properties": {"repobilityId": "10b07e199ad22a4f", "scanner": "scanner-primary", "fingerprint": "3e6077539a7447d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe572e8cd92d1a27", "level": "error", "message": {"text": "Dangling fetch: GET /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:393)"}, "properties": {"repobilityId": "0a57f1ea246d0c66", "scanner": "scanner-primary", "fingerprint": "fe572e8cd92d1a27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-250d4db188d327ce", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts/abc (tests/integration/safety-routes-contracts.test.ts:426)"}, "properties": {"repobilityId": "0cfb3659d576b2cc", "scanner": "scanner-primary", "fingerprint": "250d4db188d327ce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-31f91e9dd233a801", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts/999 (tests/integration/safety-routes-contracts.test.ts:445)"}, "properties": {"repobilityId": "f08c8fa2f8e04cd2", "scanner": "scanner-primary", "fingerprint": "31f91e9dd233a801", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d3fe4c23cbd8a3e4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts/10 (tests/integration/safety-routes-contracts.test.ts:465)"}, "properties": {"repobilityId": "494e6ca5b3ec52d0", "scanner": "scanner-primary", "fingerprint": "d3fe4c23cbd8a3e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e43786782e77de7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts/20 (tests/integration/safety-routes-contracts.test.ts:488)"}, "properties": {"repobilityId": "0c61a6e318e15cf0", "scanner": "scanner-primary", "fingerprint": "0e43786782e77de7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-12ca8077d1718198", "level": "error", "message": {"text": "Dangling fetch: POST /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:671)"}, "properties": {"repobilityId": "8a1d823fc58cc0f6", "scanner": "scanner-primary", "fingerprint": "12ca8077d1718198", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-286a0f85d1686815", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/safety/contacts (tests/integration/safety-routes-contracts.test.ts:686)"}, "properties": {"repobilityId": "4f0ac7cba174b2b0", "scanner": "scanner-primary", "fingerprint": "286a0f85d1686815", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-04054b2b11465808", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:145)"}, "properties": {"repobilityId": "a6f541577e809700", "scanner": "scanner-primary", "fingerprint": "04054b2b11465808", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d74d4b7c298e685b", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:154)"}, "properties": {"repobilityId": "495c90401d2e5c35", "scanner": "scanner-primary", "fingerprint": "d74d4b7c298e685b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4bc910636434a228", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/999 (tests/integration/group-bookings.test.ts:442)"}, "properties": {"repobilityId": "0eba11a9e4b2edb6", "scanner": "scanner-primary", "fingerprint": "4bc910636434a228", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-81274a38baae72b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:459)"}, "properties": {"repobilityId": "015cd0114bf6819d", "scanner": "scanner-primary", "fingerprint": "81274a38baae72b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-803b5a0452a03b07", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/1 (tests/integration/group-bookings.test.ts:533)"}, "properties": {"repobilityId": "68f0882f8b4e4ab6", "scanner": "scanner-primary", "fingerprint": "803b5a0452a03b07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1849285ff9d9df20", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/abc (tests/integration/group-bookings.test.ts:557)"}, "properties": {"repobilityId": "b87189e843b98672", "scanner": "scanner-primary", "fingerprint": "1849285ff9d9df20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-419413cbad97d653", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:595)"}, "properties": {"repobilityId": "27661b14060aa94d", "scanner": "scanner-primary", "fingerprint": "419413cbad97d653", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cb39e2acb81193a6", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/group-bookings/as-payer (tests/integration/group-bookings.test.ts:616)"}, "properties": {"repobilityId": "83db8059539ed34c", "scanner": "scanner-primary", "fingerprint": "cb39e2acb81193a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f01345898867428e", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/request-id-contracts.test.ts:176)"}, "properties": {"repobilityId": "d6617c20659ac848", "scanner": "scanner-primary", "fingerprint": "f01345898867428e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-881d3b72f4dc5ce7", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:246)"}, "properties": {"repobilityId": "3758fa001c631d6c", "scanner": "scanner-primary", "fingerprint": "881d3b72f4dc5ce7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a02ef389ef4de714", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:271)"}, "properties": {"repobilityId": "ac00da76712bf542", "scanner": "scanner-primary", "fingerprint": "a02ef389ef4de714", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-43e677a6d9728da0", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:314)"}, "properties": {"repobilityId": "1a18b6bd37df8d75", "scanner": "scanner-primary", "fingerprint": "43e677a6d9728da0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-12178a6e35b077fc", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-03-03/morning (tests/integration/subscriptions-routes-contracts.test.ts:341)"}, "properties": {"repobilityId": "0cf012d7ab269d9f", "scanner": "scanner-primary", "fingerprint": "12178a6e35b077fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-183350a7bf98a880", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:361)"}, "properties": {"repobilityId": "8c7be59390e517db", "scanner": "scanner-primary", "fingerprint": "183350a7bf98a880", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75539e1a50d0119e", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:419)"}, "properties": {"repobilityId": "cdd2afaa86fd863a", "scanner": "scanner-primary", "fingerprint": "75539e1a50d0119e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-18bf945b990cbf77", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:496)"}, "properties": {"repobilityId": "dfcb965b06c7b779", "scanner": "scanner-primary", "fingerprint": "18bf945b990cbf77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6aace1086c81e7c2", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:506)"}, "properties": {"repobilityId": "3b7edfea56c09f50", "scanner": "scanner-primary", "fingerprint": "6aace1086c81e7c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b30c41d7b216e0c8", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:532)"}, "properties": {"repobilityId": "17948755576a31d3", "scanner": "scanner-primary", "fingerprint": "b30c41d7b216e0c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-039c3821bf71d701", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:549)"}, "properties": {"repobilityId": "13954dc8d01436c0", "scanner": "scanner-primary", "fingerprint": "039c3821bf71d701", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6d31e768846d6ebc", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:559)"}, "properties": {"repobilityId": "c322bef0555569c7", "scanner": "scanner-primary", "fingerprint": "6d31e768846d6ebc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b7848696eaa936fb", "level": "error", "message": {"text": "Dangling fetch: GET /api/subscriptions/1/calendar (tests/integration/subscriptions-routes-contracts.test.ts:591)"}, "properties": {"repobilityId": "e04cd8cf2c2ce146", "scanner": "scanner-primary", "fingerprint": "b7848696eaa936fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a122e2b1744b4457", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.test.ts:608)"}, "properties": {"repobilityId": "825022247e230c52", "scanner": "scanner-primary", "fingerprint": "a122e2b1744b4457", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2911e91fbd898de7", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/days/not-a-date/morning (tests/integration/subscriptions-routes-contracts.test.ts:624)"}, "properties": {"repobilityId": "9764801b99904296", "scanner": "scanner-primary", "fingerprint": "2911e91fbd898de7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a04886b7e72d43ca", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:638)"}, "properties": {"repobilityId": "575fe49138268b7e", "scanner": "scanner-primary", "fingerprint": "a04886b7e72d43ca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2cf66aef9d0944ff", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/standard (tests/integration/subscriptions-routes-contracts.test.ts:653)"}, "properties": {"repobilityId": "a674d22d0eaaee74", "scanner": "scanner-primary", "fingerprint": "2cf66aef9d0944ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-74f7720de73aba57", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:667)"}, "properties": {"repobilityId": "0604432258ff6143", "scanner": "scanner-primary", "fingerprint": "74f7720de73aba57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-752175e946aaa129", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:688)"}, "properties": {"repobilityId": "74d8aba80b62dfd4", "scanner": "scanner-primary", "fingerprint": "752175e946aaa129", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bc69b5bcab472c11", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:717)"}, "properties": {"repobilityId": "ce61e12e18324544", "scanner": "scanner-primary", "fingerprint": "bc69b5bcab472c11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c1338d8beb5eb3c7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1/days/2026-04-10/morning (tests/integration/subscriptions-routes-contracts.test.ts:731)"}, "properties": {"repobilityId": "c45a00f3a86db6fb", "scanner": "scanner-primary", "fingerprint": "c1338d8beb5eb3c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-218849d02c86f1c4", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:744)"}, "properties": {"repobilityId": "0d9ec30237684844", "scanner": "scanner-primary", "fingerprint": "218849d02c86f1c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-adba601545bb4d7b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/subscriptions/1 (tests/integration/subscriptions-routes-contracts.test.ts:763)"}, "properties": {"repobilityId": "c86b48b9c560ac5f", "scanner": "scanner-primary", "fingerprint": "adba601545bb4d7b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e2b478ecf808f38a", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:776)"}, "properties": {"repobilityId": "7e5b3b52d28a1ea8", "scanner": "scanner-primary", "fingerprint": "e2b478ecf808f38a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-daf4a8a7c4378697", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:799)"}, "properties": {"repobilityId": "f1b1f37f8a8aab11", "scanner": "scanner-primary", "fingerprint": "daf4a8a7c4378697", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-146a8e32ea1ebb26", "level": "error", "message": {"text": "Dangling fetch: POST /api/subscriptions/1/payment (tests/integration/subscriptions-routes-contracts.test.ts:821)"}, "properties": {"repobilityId": "2a758e56c7d051fe", "scanner": "scanner-primary", "fingerprint": "146a8e32ea1ebb26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8f6de76642ed369c", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:129)"}, "properties": {"repobilityId": "de855128fa0a8e84", "scanner": "scanner-primary", "fingerprint": "8f6de76642ed369c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-43b2ba742065c71a", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/process?tripId=10&method=stripe (tests/integration/payments-routes-contracts.test.ts:181)"}, "properties": {"repobilityId": "faa38abc1614f763", "scanner": "scanner-primary", "fingerprint": "43b2ba742065c71a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c8b00914b0fcffff", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:250)"}, "properties": {"repobilityId": "2eb784c9af3d5167", "scanner": "scanner-primary", "fingerprint": "c8b00914b0fcffff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e4c940ef215b6b11", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:360)"}, "properties": {"repobilityId": "05170be839196284", "scanner": "scanner-primary", "fingerprint": "e4c940ef215b6b11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-24e94a5c41713251", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:613)"}, "properties": {"repobilityId": "311b53595c85bfe1", "scanner": "scanner-primary", "fingerprint": "24e94a5c41713251", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-777ed4a7ff0e9cfe", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:631)"}, "properties": {"repobilityId": "c3128187f69c1ed0", "scanner": "scanner-primary", "fingerprint": "777ed4a7ff0e9cfe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d0f6aa3a6d3ebd1b", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:658)"}, "properties": {"repobilityId": "f6f4ff8faee89384", "scanner": "scanner-primary", "fingerprint": "d0f6aa3a6d3ebd1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-108896f9e3434e3c", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:676)"}, "properties": {"repobilityId": "cf8c2097c86d08f6", "scanner": "scanner-primary", "fingerprint": "108896f9e3434e3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-017f164926382b62", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:690)"}, "properties": {"repobilityId": "a0b7657295da0516", "scanner": "scanner-primary", "fingerprint": "017f164926382b62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-08340d31ba07145e", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:729)"}, "properties": {"repobilityId": "f606128ca237f3cb", "scanner": "scanner-primary", "fingerprint": "08340d31ba07145e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ab49f266cbc30bb9", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:780)"}, "properties": {"repobilityId": "590b87d9afd9aae3", "scanner": "scanner-primary", "fingerprint": "ab49f266cbc30bb9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-58a8a1a5628529b4", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:818)"}, "properties": {"repobilityId": "093e4d9888eb95fb", "scanner": "scanner-primary", "fingerprint": "58a8a1a5628529b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ff0af81be758fb46", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:851)"}, "properties": {"repobilityId": "5505b992c8e8cc2d", "scanner": "scanner-primary", "fingerprint": "ff0af81be758fb46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e1568d3b84caa8ab", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:880)"}, "properties": {"repobilityId": "d920c5f78531ca9a", "scanner": "scanner-primary", "fingerprint": "e1568d3b84caa8ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0127a50792d855d1", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/payments-routes-contracts.test.ts:911)"}, "properties": {"repobilityId": "1a6a1d74eb36cee2", "scanner": "scanner-primary", "fingerprint": "0127a50792d855d1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c4050fe72b6eaa78", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:935)"}, "properties": {"repobilityId": "f68c2c229608d0e4", "scanner": "scanner-primary", "fingerprint": "c4050fe72b6eaa78", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e5f5f35fe9deb679", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:950)"}, "properties": {"repobilityId": "c9c8b9164aeaa6c0", "scanner": "scanner-primary", "fingerprint": "e5f5f35fe9deb679", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a4342f814ce3e280", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/payments-routes-contracts.test.ts:966)"}, "properties": {"repobilityId": "8c87613e138acc65", "scanner": "scanner-primary", "fingerprint": "a4342f814ce3e280", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f85926b2d2dfcdd", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:983)"}, "properties": {"repobilityId": "bde0b4c2a59ee479", "scanner": "scanner-primary", "fingerprint": "5f85926b2d2dfcdd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3a00634725f5a29b", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:997)"}, "properties": {"repobilityId": "e856c1978df0219a", "scanner": "scanner-primary", "fingerprint": "3a00634725f5a29b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-be24b69035c3a356", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1012)"}, "properties": {"repobilityId": "bd9143219dc2f505", "scanner": "scanner-primary", "fingerprint": "be24b69035c3a356", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bfa7f8a1d32ea3f5", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payments-routes-contracts.test.ts:1034)"}, "properties": {"repobilityId": "dd022f79bb473691", "scanner": "scanner-primary", "fingerprint": "bfa7f8a1d32ea3f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90338a2ad08405a8", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1178)"}, "properties": {"repobilityId": "f098ad73af44ba94", "scanner": "scanner-primary", "fingerprint": "90338a2ad08405a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-94218c887dd9d8b8", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1214)"}, "properties": {"repobilityId": "18ec3a14f89f210b", "scanner": "scanner-primary", "fingerprint": "94218c887dd9d8b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-501cb4bf5bcf0260", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?status=cancelled (tests/integration/payments-routes-contracts.test.ts:1237)"}, "properties": {"repobilityId": "e34fd97e67c91889", "scanner": "scanner-primary", "fingerprint": "501cb4bf5bcf0260", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-697a7ea6a09d9131", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return (tests/integration/payments-routes-contracts.test.ts:1252)"}, "properties": {"repobilityId": "9daf161c984f8628", "scanner": "scanner-primary", "fingerprint": "697a7ea6a09d9131", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0ad0cf23277e616e", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_12345 (tests/integration/payments-routes-contracts.test.ts:1269)"}, "properties": {"repobilityId": "c6eee01ea2e3d355", "scanner": "scanner-primary", "fingerprint": "0ad0cf23277e616e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-873c4f9432e45967", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/payfast/payfast-return?pf_payment_id=pf_67890 (tests/integration/payments-routes-contracts.test.ts:1286)"}, "properties": {"repobilityId": "c032aa851467e5de", "scanner": "scanner-primary", "fingerprint": "873c4f9432e45967", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-09f4e7d217515f02", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1341)"}, "properties": {"repobilityId": "a2a2397916a2f81f", "scanner": "scanner-primary", "fingerprint": "09f4e7d217515f02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-481ba230d1a377d2", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1361)"}, "properties": {"repobilityId": "23fbc2f176a8c92a", "scanner": "scanner-primary", "fingerprint": "481ba230d1a377d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e561cd5c97cb5e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1382)"}, "properties": {"repobilityId": "d8fdca7dc668b8e1", "scanner": "scanner-primary", "fingerprint": "0e561cd5c97cb5e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ad975d2bb3810a5a", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1402)"}, "properties": {"repobilityId": "7cd4e5c8d56f678f", "scanner": "scanner-primary", "fingerprint": "ad975d2bb3810a5a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3cc138548b9a9ea0", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1422)"}, "properties": {"repobilityId": "ed5980ce075af8ef", "scanner": "scanner-primary", "fingerprint": "3cc138548b9a9ea0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4a2026008c6ccb62", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-route-change-init (tests/integration/payments-routes-contracts.test.ts:1442)"}, "properties": {"repobilityId": "1d2ef442b18d2f4f", "scanner": "scanner-primary", "fingerprint": "4a2026008c6ccb62", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03a51d6b6e50c6b0", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1486)"}, "properties": {"repobilityId": "b5e62e51c3742813", "scanner": "scanner-primary", "fingerprint": "03a51d6b6e50c6b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cd49764ad1d4781d", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1529)"}, "properties": {"repobilityId": "6c1b888a411dda89", "scanner": "scanner-primary", "fingerprint": "cd49764ad1d4781d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-02550295cd2660e1", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1566)"}, "properties": {"repobilityId": "9ed827faf61f9c3c", "scanner": "scanner-primary", "fingerprint": "02550295cd2660e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-426cd09698ae0ecf", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1601)"}, "properties": {"repobilityId": "8de5242874ef0c0e", "scanner": "scanner-primary", "fingerprint": "426cd09698ae0ecf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-43ee915c45ae73ed", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1641)"}, "properties": {"repobilityId": "50a5e4a2879a8899", "scanner": "scanner-primary", "fingerprint": "43ee915c45ae73ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ede46b9c9495656b", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/payfast/payfast-webhook (tests/integration/payments-routes-contracts.test.ts:1670)"}, "properties": {"repobilityId": "92e59ac1c9240047", "scanner": "scanner-primary", "fingerprint": "ede46b9c9495656b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aaf7d78c0d152eed", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:88)"}, "properties": {"repobilityId": "55e2aab82088e4e0", "scanner": "scanner-primary", "fingerprint": "aaf7d78c0d152eed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-50c5301946a3e58e", "level": "error", "message": {"text": "Dangling fetch: GET /api/matching/config (tests/integration/matching-routes-contracts.test.ts:115)"}, "properties": {"repobilityId": "d91855b9903016b4", "scanner": "scanner-primary", "fingerprint": "50c5301946a3e58e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6a90e4987b61ff1", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/rider-requests (tests/integration/matching-routes-contracts.test.ts:169)"}, "properties": {"repobilityId": "a0c97c1b1422e9e0", "scanner": "scanner-primary", "fingerprint": "a6a90e4987b61ff1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee437609a898b0ea", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/matching/driver-trips/dt-1 (tests/integration/matching-routes-contracts.test.ts:232)"}, "properties": {"repobilityId": "a104dfd9a444e039", "scanner": "scanner-primary", "fingerprint": "ee437609a898b0ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fd75744a8cb7cb24", "level": "error", "message": {"text": "Dangling fetch: GET /api/matching/stats (tests/integration/matching-routes-contracts.test.ts:321)"}, "properties": {"repobilityId": "fbb5b7d85c16c586", "scanner": "scanner-primary", "fingerprint": "fd75744a8cb7cb24", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7577b94fa91276a2", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/users/77 (tests/integration/admin-routes-hardening.test.ts:170)"}, "properties": {"repobilityId": "f9a718bfe98f87e8", "scanner": "scanner-primary", "fingerprint": "7577b94fa91276a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8243dcba62e1a85d", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/logs (tests/integration/admin-routes-hardening.test.ts:191)"}, "properties": {"repobilityId": "a4c1c9a1cebe8eda", "scanner": "scanner-primary", "fingerprint": "8243dcba62e1a85d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc6587b4f1d1ff23", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/logs?page=-1 (tests/integration/admin-routes-hardening.test.ts:256)"}, "properties": {"repobilityId": "2e7202b036301858", "scanner": "scanner-primary", "fingerprint": "dc6587b4f1d1ff23", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e808c9ee4d9b9e6b", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:382)"}, "properties": {"repobilityId": "abc1cba54c7d0f4e", "scanner": "scanner-primary", "fingerprint": "e808c9ee4d9b9e6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4f117f649e64e934", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:406)"}, "properties": {"repobilityId": "f8db3b713718b33d", "scanner": "scanner-primary", "fingerprint": "4f117f649e64e934", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-109dbc0d57e078bc", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:434)"}, "properties": {"repobilityId": "8ed04c3fb7d4e320", "scanner": "scanner-primary", "fingerprint": "109dbc0d57e078bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b02e40ae3a50e6f4", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/10 (tests/integration/admin-routes-hardening.test.ts:467)"}, "properties": {"repobilityId": "7e8c0437695276de", "scanner": "scanner-primary", "fingerprint": "b02e40ae3a50e6f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-782eddcf775141c1", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:507)"}, "properties": {"repobilityId": "fdc5ff0194614d9f", "scanner": "scanner-primary", "fingerprint": "782eddcf775141c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4bbed0f67442e387", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/users/10/export (tests/integration/admin-routes-hardening.test.ts:541)"}, "properties": {"repobilityId": "86ca3ba635eeb614", "scanner": "scanner-primary", "fingerprint": "4bbed0f67442e387", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-42aad6d15a4707fa", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:614)"}, "properties": {"repobilityId": "6f8c7cbd71f09c6c", "scanner": "scanner-primary", "fingerprint": "42aad6d15a4707fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0089d251415b670e", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:631)"}, "properties": {"repobilityId": "16a35ec72fcebb0c", "scanner": "scanner-primary", "fingerprint": "0089d251415b670e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc1b64f8208046b7", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/cron/run (tests/integration/admin-routes-hardening.test.ts:658)"}, "properties": {"repobilityId": "5913525ee3e90549", "scanner": "scanner-primary", "fingerprint": "dc1b64f8208046b7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2d33b8641ec0bcd4", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:678)"}, "properties": {"repobilityId": "d43124e1ec1c208c", "scanner": "scanner-primary", "fingerprint": "2d33b8641ec0bcd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ae86287492fa51f0", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:688)"}, "properties": {"repobilityId": "061aa60b4a44e4bd", "scanner": "scanner-primary", "fingerprint": "ae86287492fa51f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-84b63301db4557fa", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/feature-flags (tests/integration/admin-routes-hardening.test.ts:703)"}, "properties": {"repobilityId": "5ac14987c5c83247", "scanner": "scanner-primary", "fingerprint": "84b63301db4557fa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8b5e3e964738c2f6", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:715)"}, "properties": {"repobilityId": "7d8996b14a9b5f70", "scanner": "scanner-primary", "fingerprint": "8b5e3e964738c2f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3bc55b874f4f2100", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/feature-flags/INVALID-FLAG! (tests/integration/admin-routes-hardening.test.ts:729)"}, "properties": {"repobilityId": "dbaa7922df0ca174", "scanner": "scanner-primary", "fingerprint": "3bc55b874f4f2100", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4ccdddbcf5c01d9a", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:745)"}, "properties": {"repobilityId": "95639078d34fcc1f", "scanner": "scanner-primary", "fingerprint": "4ccdddbcf5c01d9a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90f76afffc224259", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:771)"}, "properties": {"repobilityId": "f1cdda01819fd69c", "scanner": "scanner-primary", "fingerprint": "90f76afffc224259", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3f175f0071f46660", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:790)"}, "properties": {"repobilityId": "803029461c97855a", "scanner": "scanner-primary", "fingerprint": "3f175f0071f46660", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9a139da8cb9c55b9", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/BAD NAME! (tests/integration/admin-routes-hardening.test.ts:803)"}, "properties": {"repobilityId": "c973d330371fb672", "scanner": "scanner-primary", "fingerprint": "9a139da8cb9c55b9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4a4570e888b472d2", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/admin/feature-flags/test_feature (tests/integration/admin-routes-hardening.test.ts:829)"}, "properties": {"repobilityId": "c18882d370cdca13", "scanner": "scanner-primary", "fingerprint": "4a4570e888b472d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-57b698a1e82dc887", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/rating (tests/integration/user-routes-hardening.test.ts:118)"}, "properties": {"repobilityId": "0a1be7fd44b8c48b", "scanner": "scanner-primary", "fingerprint": "57b698a1e82dc887", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5ec1b7f01f96fdf9", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/not-a-number/rating (tests/integration/user-routes-hardening.test.ts:131)"}, "properties": {"repobilityId": "8ccd6aefd93f98d6", "scanner": "scanner-primary", "fingerprint": "5ec1b7f01f96fdf9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ea1545191448e530", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/9/carbon-certificate (tests/integration/user-routes-hardening.test.ts:289)"}, "properties": {"repobilityId": "fa0d52969bc73665", "scanner": "scanner-primary", "fingerprint": "ea1545191448e530", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-38463d038dbee2da", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:117)"}, "properties": {"repobilityId": "380b922232d1e6a5", "scanner": "scanner-primary", "fingerprint": "38463d038dbee2da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a9b5af1a6a85f689", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:132)"}, "properties": {"repobilityId": "c2b4252a08897227", "scanner": "scanner-primary", "fingerprint": "a9b5af1a6a85f689", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-158562fe103c2c04", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-abc/analytics (tests/integration/fleet-analytics-contracts.test.ts:152)"}, "properties": {"repobilityId": "5cb6be9d51b91dfb", "scanner": "scanner-primary", "fingerprint": "158562fe103c2c04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9c00b74b03151a15", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/nonexistent-org/analytics (tests/integration/fleet-analytics-contracts.test.ts:177)"}, "properties": {"repobilityId": "333855402e0e4a9d", "scanner": "scanner-primary", "fingerprint": "9c00b74b03151a15", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1ed8333d93413691", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-fleet-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:228)"}, "properties": {"repobilityId": "a2a49ac6f89aaa8c", "scanner": "scanner-primary", "fingerprint": "1ed8333d93413691", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3dbfdaa6da8ab440", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-super-1/analytics (tests/integration/fleet-analytics-contracts.test.ts:297)"}, "properties": {"repobilityId": "6fbcb4dd185f7e78", "scanner": "scanner-primary", "fingerprint": "3dbfdaa6da8ab440", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-db10201dbd72a63c", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/organizations/org-empty/analytics (tests/integration/fleet-analytics-contracts.test.ts:334)"}, "properties": {"repobilityId": "7ed97e83468d0aac", "scanner": "scanner-primary", "fingerprint": "db10201dbd72a63c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c31557195f235b10", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:75)"}, "properties": {"repobilityId": "9d8c399d815109de", "scanner": "scanner-primary", "fingerprint": "c31557195f235b10", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb80c40b3e2f7984", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:85)"}, "properties": {"repobilityId": "7ad2ac862a7afbd3", "scanner": "scanner-primary", "fingerprint": "bb80c40b3e2f7984", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3810b84cd2d7f057", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:94)"}, "properties": {"repobilityId": "ede527b175d9dc65", "scanner": "scanner-primary", "fingerprint": "3810b84cd2d7f057", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ec34bdea8c9f8546", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:104)"}, "properties": {"repobilityId": "bc67e03c93e56143", "scanner": "scanner-primary", "fingerprint": "ec34bdea8c9f8546", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-315b065634729afe", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:114)"}, "properties": {"repobilityId": "8ffc10608bc7d637", "scanner": "scanner-primary", "fingerprint": "315b065634729afe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c9756b62923d291a", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:136)"}, "properties": {"repobilityId": "482137a7373c13bc", "scanner": "scanner-primary", "fingerprint": "c9756b62923d291a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7c2127348cdf45cb", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:149)"}, "properties": {"repobilityId": "2e3adc9e40f16df2", "scanner": "scanner-primary", "fingerprint": "7c2127348cdf45cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6ea4cbf86f398b95", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:166)"}, "properties": {"repobilityId": "1cb04e8432a6d967", "scanner": "scanner-primary", "fingerprint": "6ea4cbf86f398b95", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7fa2118f2abf2555", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:178)"}, "properties": {"repobilityId": "0b221c1686177f45", "scanner": "scanner-primary", "fingerprint": "7fa2118f2abf2555", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c453d7e21cc69acc", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:198)"}, "properties": {"repobilityId": "20230ad8a77f6651", "scanner": "scanner-primary", "fingerprint": "c453d7e21cc69acc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ed18eb356b0acdde", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:212)"}, "properties": {"repobilityId": "fc13f434daab6b5f", "scanner": "scanner-primary", "fingerprint": "ed18eb356b0acdde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a79087ca9ee6eca6", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:229)"}, "properties": {"repobilityId": "9b28b2d7a3bb76e6", "scanner": "scanner-primary", "fingerprint": "a79087ca9ee6eca6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a1b5af50965a128f", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:249)"}, "properties": {"repobilityId": "65fa97a03a5ef5c2", "scanner": "scanner-primary", "fingerprint": "a1b5af50965a128f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-58a9c67211a1d037", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:267)"}, "properties": {"repobilityId": "f7d987f68dd22bee", "scanner": "scanner-primary", "fingerprint": "58a9c67211a1d037", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fa4a99345d6ee1e3", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:286)"}, "properties": {"repobilityId": "76d891559f8d1941", "scanner": "scanner-primary", "fingerprint": "fa4a99345d6ee1e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa8cdb0bc1cfb61b", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:298)"}, "properties": {"repobilityId": "f0bd1131355e8bfb", "scanner": "scanner-primary", "fingerprint": "aa8cdb0bc1cfb61b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9378f4b04f393ca1", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:315)"}, "properties": {"repobilityId": "9d74fd9172985d15", "scanner": "scanner-primary", "fingerprint": "9378f4b04f393ca1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-765683f55d90fa17", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:336)"}, "properties": {"repobilityId": "e517618785befe2d", "scanner": "scanner-primary", "fingerprint": "765683f55d90fa17", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-955fc756282f92a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:354)"}, "properties": {"repobilityId": "fb4b731aa17259b7", "scanner": "scanner-primary", "fingerprint": "955fc756282f92a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e096e0d8871f686", "level": "error", "message": {"text": "Dangling fetch: GET /api/payments/config (tests/integration/payment-config-routes-contracts.test.ts:365)"}, "properties": {"repobilityId": "ea2de8e91116d7c0", "scanner": "scanner-primary", "fingerprint": "1e096e0d8871f686", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-12abb40c86b5cbed", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:196)"}, "properties": {"repobilityId": "9fd73c9ad12f69a0", "scanner": "scanner-primary", "fingerprint": "12abb40c86b5cbed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8b63a537d11ae957", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:248)"}, "properties": {"repobilityId": "eb9abb4b3ec43455", "scanner": "scanner-primary", "fingerprint": "8b63a537d11ae957", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-82b7e1893156b7ab", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:297)"}, "properties": {"repobilityId": "624c3514176520ff", "scanner": "scanner-primary", "fingerprint": "82b7e1893156b7ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-07c99d139e3bd07e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:350)"}, "properties": {"repobilityId": "d88d0917ea403c4f", "scanner": "scanner-primary", "fingerprint": "07c99d139e3bd07e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-65218ee6051bb7b5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/notification-preferences-enforcement.test.ts:415)"}, "properties": {"repobilityId": "6d5e68ea28f3a526", "scanner": "scanner-primary", "fingerprint": "65218ee6051bb7b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-87c4f755d621776b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/notification-preferences-enforcement.test.ts:467)"}, "properties": {"repobilityId": "d10d1eedfcfb21eb", "scanner": "scanner-primary", "fingerprint": "87c4f755d621776b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-51d6df6f6270f197", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/notification-preferences-enforcement.test.ts:518)"}, "properties": {"repobilityId": "e06b22d9c35eb126", "scanner": "scanner-primary", "fingerprint": "51d6df6f6270f197", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9ce73a3fe97582eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/notification-preferences-enforcement.test.ts:568)"}, "properties": {"repobilityId": "a561aac15127fe92", "scanner": "scanner-primary", "fingerprint": "9ce73a3fe97582eb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7a2d0b166df90af5", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available (tests/integration/trips-routes-contracts.test.ts:82)"}, "properties": {"repobilityId": "50ccf0bb5ca89588", "scanner": "scanner-primary", "fingerprint": "7a2d0b166df90af5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1431bfd08a8119ab", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:87)"}, "properties": {"repobilityId": "21bb080587fa6f6b", "scanner": "scanner-primary", "fingerprint": "1431bfd08a8119ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c74224cce8a50f81", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:92)"}, "properties": {"repobilityId": "3488d6b688e90f5f", "scanner": "scanner-primary", "fingerprint": "c74224cce8a50f81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aff6cd2242709756", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:97)"}, "properties": {"repobilityId": "bf05951b10609556", "scanner": "scanner-primary", "fingerprint": "aff6cd2242709756", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-60eac5c0ec90870f", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:102)"}, "properties": {"repobilityId": "6b409138e58f3af5", "scanner": "scanner-primary", "fingerprint": "60eac5c0ec90870f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5d5c2b4bd36d039f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:107)"}, "properties": {"repobilityId": "24fed20f35967183", "scanner": "scanner-primary", "fingerprint": "5d5c2b4bd36d039f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-53c54b6e80cbdec8", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:123)"}, "properties": {"repobilityId": "d3beb5893676d149", "scanner": "scanner-primary", "fingerprint": "53c54b6e80cbdec8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8e27a405ac16c261", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:144)"}, "properties": {"repobilityId": "239ba5f6c88a9c7f", "scanner": "scanner-primary", "fingerprint": "8e27a405ac16c261", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3706e63854b6bbaa", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:159)"}, "properties": {"repobilityId": "f98bcdc627b51196", "scanner": "scanner-primary", "fingerprint": "3706e63854b6bbaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-38b1238a156d02ab", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:180)"}, "properties": {"repobilityId": "47095d888287e0c2", "scanner": "scanner-primary", "fingerprint": "38b1238a156d02ab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-161cda98352709a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/999/cancel (tests/integration/trips-routes-contracts.test.ts:200)"}, "properties": {"repobilityId": "239d9752ac7a78e4", "scanner": "scanner-primary", "fingerprint": "161cda98352709a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ec75a9a6907825fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:216)"}, "properties": {"repobilityId": "00675484493f6428", "scanner": "scanner-primary", "fingerprint": "ec75a9a6907825fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b7ce7e4d32feca6f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:234)"}, "properties": {"repobilityId": "eeaca6aa41a9e920", "scanner": "scanner-primary", "fingerprint": "b7ce7e4d32feca6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7099bc2a1056c80f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:252)"}, "properties": {"repobilityId": "ece8ca8c2db5f8c4", "scanner": "scanner-primary", "fingerprint": "7099bc2a1056c80f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1100399701d8d945", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:268)"}, "properties": {"repobilityId": "d4f72c0362288c07", "scanner": "scanner-primary", "fingerprint": "1100399701d8d945", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4aad9bdae44993a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/trips-routes-contracts.test.ts:290)"}, "properties": {"repobilityId": "1aa913525d6cba12", "scanner": "scanner-primary", "fingerprint": "4aad9bdae44993a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-28fd0a93403d3e97", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/999/book (tests/integration/trips-routes-contracts.test.ts:303)"}, "properties": {"repobilityId": "430f65d39bf5043c", "scanner": "scanner-primary", "fingerprint": "28fd0a93403d3e97", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7b8c585c0b4c9f84", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:323)"}, "properties": {"repobilityId": "b2aabed73d34167b", "scanner": "scanner-primary", "fingerprint": "7b8c585c0b4c9f84", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-197523a82d44174d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/route-change (tests/integration/trips-routes-contracts.test.ts:370)"}, "properties": {"repobilityId": "03b46f4730d360b4", "scanner": "scanner-primary", "fingerprint": "197523a82d44174d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8f0b7f7a81d3f284", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/route-change/88/approve (tests/integration/trips-routes-contracts.test.ts:425)"}, "properties": {"repobilityId": "48f21f5d801fe30c", "scanner": "scanner-primary", "fingerprint": "8f0b7f7a81d3f284", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a01cddc129ff86f5", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:460)"}, "properties": {"repobilityId": "e0c5629fdf6099ef", "scanner": "scanner-primary", "fingerprint": "a01cddc129ff86f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f841262dab452148", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:494)"}, "properties": {"repobilityId": "74393a19db454a3b", "scanner": "scanner-primary", "fingerprint": "f841262dab452148", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2bdb6d2f65b61174", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:528)"}, "properties": {"repobilityId": "1f35521cbfb01871", "scanner": "scanner-primary", "fingerprint": "2bdb6d2f65b61174", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-82bae896222b630f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:549)"}, "properties": {"repobilityId": "92d728815672967c", "scanner": "scanner-primary", "fingerprint": "82bae896222b630f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-885eccdfc8c33d4d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:572)"}, "properties": {"repobilityId": "5afe054c721a1ce5", "scanner": "scanner-primary", "fingerprint": "885eccdfc8c33d4d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e97bf8a63941df8a", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:593)"}, "properties": {"repobilityId": "26b48de04f2def8c", "scanner": "scanner-primary", "fingerprint": "e97bf8a63941df8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7a9f3f0b65515eb5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:622)"}, "properties": {"repobilityId": "4a949d82a6dd1e87", "scanner": "scanner-primary", "fingerprint": "7a9f3f0b65515eb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-220c5853dbbc779e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/arrive (tests/integration/trips-routes-contracts.test.ts:646)"}, "properties": {"repobilityId": "1b6cf6d9125f3aed", "scanner": "scanner-primary", "fingerprint": "220c5853dbbc779e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1f6cd7fbbd2d2964", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:672)"}, "properties": {"repobilityId": "8df4e5d3b99ef1f5", "scanner": "scanner-primary", "fingerprint": "1f6cd7fbbd2d2964", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-deda5c2aad282f31", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/trips-routes-contracts.test.ts:697)"}, "properties": {"repobilityId": "5b13632c9c1176a0", "scanner": "scanner-primary", "fingerprint": "deda5c2aad282f31", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e7253ea6e673285b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/trips-routes-contracts.test.ts:734)"}, "properties": {"repobilityId": "68c9101200e457ee", "scanner": "scanner-primary", "fingerprint": "e7253ea6e673285b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fa36df65185a6751", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0 (tests/integration/trips-routes-contracts.test.ts:749)"}, "properties": {"repobilityId": "73d504e73bd023ed", "scanner": "scanner-primary", "fingerprint": "fa36df65185a6751", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-039032af9938d094", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=999&pickupLng=28.0&dropoffLat=-26.0&dropoffLng=28.1 (tests/integration/trips-routes-contracts.test.ts:759)"}, "properties": {"repobilityId": "12eb4f818ef515df", "scanner": "scanner-primary", "fingerprint": "039032af9938d094", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75d1fbb50d26dcab", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/available?pickupLat=-26.2&pickupLng=28.0&dropoffLat=-26.1&dropoffLng=28.1 (tests/integration/trips-routes-contracts.test.ts:773)"}, "properties": {"repobilityId": "f0980d84f29bac1e", "scanner": "scanner-primary", "fingerprint": "75d1fbb50d26dcab", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9745b0f55f36a793", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:787)"}, "properties": {"repobilityId": "1366073c8d631fdb", "scanner": "scanner-primary", "fingerprint": "9745b0f55f36a793", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-51198f0f95bdee01", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:798)"}, "properties": {"repobilityId": "142fadce8ddfc24e", "scanner": "scanner-primary", "fingerprint": "51198f0f95bdee01", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d14480c11ed88cd6", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:813)"}, "properties": {"repobilityId": "4297925234749aec", "scanner": "scanner-primary", "fingerprint": "d14480c11ed88cd6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e19ac904e520e0c5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:831)"}, "properties": {"repobilityId": "6101024b50cbf604", "scanner": "scanner-primary", "fingerprint": "e19ac904e520e0c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d6c469d7541c60fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:849)"}, "properties": {"repobilityId": "c130e37acdff5148", "scanner": "scanner-primary", "fingerprint": "d6c469d7541c60fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8a0ea2d280563e1f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/trips-routes-contracts.test.ts:870)"}, "properties": {"repobilityId": "2b1363ded100ccae", "scanner": "scanner-primary", "fingerprint": "8a0ea2d280563e1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-569ac1e197ce87a7", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:887)"}, "properties": {"repobilityId": "3517e6c1711acd71", "scanner": "scanner-primary", "fingerprint": "569ac1e197ce87a7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4e14316a696b722e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/notanumber/location (tests/integration/trips-routes-contracts.test.ts:901)"}, "properties": {"repobilityId": "596335f116ae95d9", "scanner": "scanner-primary", "fingerprint": "4e14316a696b722e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3f6992acd6073ab5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:915)"}, "properties": {"repobilityId": "89d3d519469fa290", "scanner": "scanner-primary", "fingerprint": "3f6992acd6073ab5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-674d22445fae69a3", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/1/location (tests/integration/trips-routes-contracts.test.ts:928)"}, "properties": {"repobilityId": "c01e4b1a6e9fc9fa", "scanner": "scanner-primary", "fingerprint": "674d22445fae69a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-db8721666d34ffb5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:935)"}, "properties": {"repobilityId": "5eacb14bf526c727", "scanner": "scanner-primary", "fingerprint": "db8721666d34ffb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a25e3670d3fde012", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/complete (tests/integration/trips-routes-contracts.test.ts:949)"}, "properties": {"repobilityId": "9bfaf81b8f2f4190", "scanner": "scanner-primary", "fingerprint": "a25e3670d3fde012", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d2d0a9c5affb4273", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:960)"}, "properties": {"repobilityId": "92d2e71ed5181f7a", "scanner": "scanner-primary", "fingerprint": "d2d0a9c5affb4273", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a155920eb2f6c097", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/trips/1/waitlist (tests/integration/trips-routes-contracts.test.ts:970)"}, "properties": {"repobilityId": "51029440db6762fa", "scanner": "scanner-primary", "fingerprint": "a155920eb2f6c097", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-27a0540b9feb386c", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:981)"}, "properties": {"repobilityId": "a69470d799902004", "scanner": "scanner-primary", "fingerprint": "27a0540b9feb386c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a7a763c1743a1fd7", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/1/reject (tests/integration/trips-routes-contracts.test.ts:995)"}, "properties": {"repobilityId": "494b6f0adeb91a5e", "scanner": "scanner-primary", "fingerprint": "a7a763c1743a1fd7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3e91373fd7983412", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1006)"}, "properties": {"repobilityId": "00c488bc523e2f02", "scanner": "scanner-primary", "fingerprint": "3e91373fd7983412", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4845f02601d72b71", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1016)"}, "properties": {"repobilityId": "db190b2e43a18e37", "scanner": "scanner-primary", "fingerprint": "4845f02601d72b71", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-db33b2769acd5b8d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1026)"}, "properties": {"repobilityId": "8dd6ea04cd7b48c4", "scanner": "scanner-primary", "fingerprint": "db33b2769acd5b8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a6175a00b48441b6", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1038)"}, "properties": {"repobilityId": "b95fd3a736450a67", "scanner": "scanner-primary", "fingerprint": "a6175a00b48441b6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2ad1eb51d83cdbb5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/999/dispute (tests/integration/trips-routes-contracts.test.ts:1052)"}, "properties": {"repobilityId": "e5deabb06aa7d8b9", "scanner": "scanner-primary", "fingerprint": "2ad1eb51d83cdbb5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-df431fe9f556d081", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1068)"}, "properties": {"repobilityId": "9de46bf62b73dac4", "scanner": "scanner-primary", "fingerprint": "df431fe9f556d081", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c349f2986376c3d0", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1094)"}, "properties": {"repobilityId": "0e9db36ad4da5371", "scanner": "scanner-primary", "fingerprint": "c349f2986376c3d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8f8e736c7c7a535a", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1118)"}, "properties": {"repobilityId": "f3a644b89eed1119", "scanner": "scanner-primary", "fingerprint": "8f8e736c7c7a535a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f88b87d31587b3de", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1145)"}, "properties": {"repobilityId": "848ff94f8e64ac94", "scanner": "scanner-primary", "fingerprint": "f88b87d31587b3de", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1d6e05cd90ba7702", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/not-a-number/dispute (tests/integration/trips-routes-contracts.test.ts:1158)"}, "properties": {"repobilityId": "629ba1b8fdc7f172", "scanner": "scanner-primary", "fingerprint": "1d6e05cd90ba7702", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a03ebc065d91d713", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1185)"}, "properties": {"repobilityId": "1a4d5da091594b33", "scanner": "scanner-primary", "fingerprint": "a03ebc065d91d713", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3168c8b336b963d4", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/dispute (tests/integration/trips-routes-contracts.test.ts:1217)"}, "properties": {"repobilityId": "34aa896553571292", "scanner": "scanner-primary", "fingerprint": "3168c8b336b963d4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-61b7fe6ce54a5803", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1243)"}, "properties": {"repobilityId": "4a097dd5d1bd2e7b", "scanner": "scanner-primary", "fingerprint": "61b7fe6ce54a5803", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6db8c189282585f5", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/trips-routes-contracts.test.ts:1268)"}, "properties": {"repobilityId": "57a987819eda301e", "scanner": "scanner-primary", "fingerprint": "6db8c189282585f5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1fce4de4adcb9f48", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1304)"}, "properties": {"repobilityId": "5cdaeda573b5d423", "scanner": "scanner-primary", "fingerprint": "1fce4de4adcb9f48", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7745767132f3f4b2", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/2/book (tests/integration/trips-routes-contracts.test.ts:1324)"}, "properties": {"repobilityId": "fa07809108b1433a", "scanner": "scanner-primary", "fingerprint": "7745767132f3f4b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2a9fe8ad1d667fa0", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/apple/callback?code=abc123&state=missing (tests/integration/roadmap-contracts.test.ts:567)"}, "properties": {"repobilityId": "f93337932d7de781", "scanner": "scanner-primary", "fingerprint": "2a9fe8ad1d667fa0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26cb670fba14fe1d", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/apple/callback?code=ok-code&state=good-state (tests/integration/roadmap-contracts.test.ts:614)"}, "properties": {"repobilityId": "6d7c60bb31cf40aa", "scanner": "scanner-primary", "fingerprint": "26cb670fba14fe1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4011e88e6b87f37e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:384)"}, "properties": {"repobilityId": "028f03520bacfedb", "scanner": "scanner-primary", "fingerprint": "4011e88e6b87f37e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7ca4d00cc51a8e53", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:416)"}, "properties": {"repobilityId": "6a77390c92a7343e", "scanner": "scanner-primary", "fingerprint": "7ca4d00cc51a8e53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6e46170e2cc22a16", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:456)"}, "properties": {"repobilityId": "235c88d1909b79b8", "scanner": "scanner-primary", "fingerprint": "6e46170e2cc22a16", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7f6ac4133a942b7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/offer (tests/integration/security-hardening.test.ts:513)"}, "properties": {"repobilityId": "afafc46a0ef25ad9", "scanner": "scanner-primary", "fingerprint": "7f6ac4133a942b7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-157e2ed55013b31c", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:533)"}, "properties": {"repobilityId": "1e0007e30969cba6", "scanner": "scanner-primary", "fingerprint": "157e2ed55013b31c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5c9b5110cc78c019", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:562)"}, "properties": {"repobilityId": "b25a6b3b5d194819", "scanner": "scanner-primary", "fingerprint": "5c9b5110cc78c019", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-49b61a6a4ba20a2c", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:585)"}, "properties": {"repobilityId": "9989e78e36d45c3a", "scanner": "scanner-primary", "fingerprint": "49b61a6a4ba20a2c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-134312e6b9086ff9", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:621)"}, "properties": {"repobilityId": "21e65313d70df6f0", "scanner": "scanner-primary", "fingerprint": "134312e6b9086ff9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7143af70f7426366", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:648)"}, "properties": {"repobilityId": "ddcb9881de53b64f", "scanner": "scanner-primary", "fingerprint": "7143af70f7426366", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-71210d1101d21512", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/book (tests/integration/security-hardening.test.ts:676)"}, "properties": {"repobilityId": "ed3dcbf5ffbc84ac", "scanner": "scanner-primary", "fingerprint": "71210d1101d21512", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-89459c825c9ad48f", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:704)"}, "properties": {"repobilityId": "0c11e7268b4c9a57", "scanner": "scanner-primary", "fingerprint": "89459c825c9ad48f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3af4abfb27ee1f82", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:737)"}, "properties": {"repobilityId": "72260b16fe2b7637", "scanner": "scanner-primary", "fingerprint": "3af4abfb27ee1f82", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1117ac9aa804ffb2", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:778)"}, "properties": {"repobilityId": "bd45c9bce48c31f5", "scanner": "scanner-primary", "fingerprint": "1117ac9aa804ffb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-98c289dc33125486", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:817)"}, "properties": {"repobilityId": "1164089c4ef3890d", "scanner": "scanner-primary", "fingerprint": "98c289dc33125486", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-89064e49d4ac1924", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:864)"}, "properties": {"repobilityId": "c1ebca26cc83ff28", "scanner": "scanner-primary", "fingerprint": "89064e49d4ac1924", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-367f20edb3d76ba6", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:887)"}, "properties": {"repobilityId": "fcde94473792fe13", "scanner": "scanner-primary", "fingerprint": "367f20edb3d76ba6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0eea5e749371f7bf", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/accept (tests/integration/security-hardening.test.ts:919)"}, "properties": {"repobilityId": "8838e3a3ec2a37c2", "scanner": "scanner-primary", "fingerprint": "0eea5e749371f7bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b07529926c0fe7e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:941)"}, "properties": {"repobilityId": "be2bd788540ba7bf", "scanner": "scanner-primary", "fingerprint": "b07529926c0fe7e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b11ab387c152d9cf", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:970)"}, "properties": {"repobilityId": "6e8f14fe87e978b4", "scanner": "scanner-primary", "fingerprint": "b11ab387c152d9cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6b89bd7f9eab626e", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1007)"}, "properties": {"repobilityId": "d828258c714ff6d0", "scanner": "scanner-primary", "fingerprint": "6b89bd7f9eab626e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-be81359d1f29835b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1014)"}, "properties": {"repobilityId": "4660ca8c7729641e", "scanner": "scanner-primary", "fingerprint": "be81359d1f29835b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-efbc35a90a12a2ac", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1052)"}, "properties": {"repobilityId": "30c20602e0f73f24", "scanner": "scanner-primary", "fingerprint": "efbc35a90a12a2ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c4707aa29b74d69d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1063)"}, "properties": {"repobilityId": "01d11e52300f825f", "scanner": "scanner-primary", "fingerprint": "c4707aa29b74d69d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-23f457d72b85e5cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1082)"}, "properties": {"repobilityId": "896cfac80a6d766a", "scanner": "scanner-primary", "fingerprint": "23f457d72b85e5cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d10ed3daf7b38365", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1110)"}, "properties": {"repobilityId": "114a648d53668755", "scanner": "scanner-primary", "fingerprint": "d10ed3daf7b38365", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f0581da46507ce7", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/bookings/2/reject (tests/integration/security-hardening.test.ts:1128)"}, "properties": {"repobilityId": "c60ac32773d2d825", "scanner": "scanner-primary", "fingerprint": "5f0581da46507ce7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e8712d314c6930df", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1152)"}, "properties": {"repobilityId": "3e535ecc0a78af7f", "scanner": "scanner-primary", "fingerprint": "e8712d314c6930df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b446a4cec6cb395", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1176)"}, "properties": {"repobilityId": "673aea3163bf990f", "scanner": "scanner-primary", "fingerprint": "2b446a4cec6cb395", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2beaab910a56f6c9", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1201)"}, "properties": {"repobilityId": "83b00fefaf353307", "scanner": "scanner-primary", "fingerprint": "2beaab910a56f6c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0a3de449e707a3aa", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1237)"}, "properties": {"repobilityId": "3fffe98655e43587", "scanner": "scanner-primary", "fingerprint": "0a3de449e707a3aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c0c5c9df1afcc0c8", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1244)"}, "properties": {"repobilityId": "9a0556bd210289ed", "scanner": "scanner-primary", "fingerprint": "c0c5c9df1afcc0c8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-94b1b601a35c280d", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1285)"}, "properties": {"repobilityId": "896ec8f5378c1128", "scanner": "scanner-primary", "fingerprint": "94b1b601a35c280d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f10fdcf5319fbd77", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1292)"}, "properties": {"repobilityId": "d8f1f05b8d771964", "scanner": "scanner-primary", "fingerprint": "f10fdcf5319fbd77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-57c0d488010560ac", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1307)"}, "properties": {"repobilityId": "881b42ebc6c73911", "scanner": "scanner-primary", "fingerprint": "57c0d488010560ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e0718a7a2c39681b", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1335)"}, "properties": {"repobilityId": "a5a497528a858474", "scanner": "scanner-primary", "fingerprint": "e0718a7a2c39681b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7b9b251ed1a67bc8", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1368)"}, "properties": {"repobilityId": "ae0f1529a0e9a3e0", "scanner": "scanner-primary", "fingerprint": "7b9b251ed1a67bc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-84d7ccc0613f9907", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1427)"}, "properties": {"repobilityId": "f721a84c7518dbd3", "scanner": "scanner-primary", "fingerprint": "84d7ccc0613f9907", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-73a0d78cebe64bc1", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/cancel (tests/integration/security-hardening.test.ts:1445)"}, "properties": {"repobilityId": "ac23d718ddfb43a7", "scanner": "scanner-primary", "fingerprint": "73a0d78cebe64bc1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3b786881d93faa20", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1469)"}, "properties": {"repobilityId": "7a1cfe392163a6c6", "scanner": "scanner-primary", "fingerprint": "3b786881d93faa20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4f8627d3bf757260", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1500)"}, "properties": {"repobilityId": "23f57e1fd9d8f33c", "scanner": "scanner-primary", "fingerprint": "4f8627d3bf757260", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3ce5e0fa958e3d33", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1520)"}, "properties": {"repobilityId": "57b9a5885ab92ea8", "scanner": "scanner-primary", "fingerprint": "3ce5e0fa958e3d33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2db72f246d90479a", "level": "error", "message": {"text": "Dangling fetch: POST /api/trips/1/rate (tests/integration/security-hardening.test.ts:1548)"}, "properties": {"repobilityId": "c8e07281e8e2b8a4", "scanner": "scanner-primary", "fingerprint": "2db72f246d90479a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-989c998ce705d376", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1569)"}, "properties": {"repobilityId": "3838a07822c77ef1", "scanner": "scanner-primary", "fingerprint": "989c998ce705d376", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-064132e187495435", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1588)"}, "properties": {"repobilityId": "de09ba441db34ed7", "scanner": "scanner-primary", "fingerprint": "064132e187495435", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6f3b5cdeba54de41", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1612)"}, "properties": {"repobilityId": "ef912f4b39dd9e4b", "scanner": "scanner-primary", "fingerprint": "6f3b5cdeba54de41", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-00a0cbd50932772b", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1639)"}, "properties": {"repobilityId": "dfb495ea1d562868", "scanner": "scanner-primary", "fingerprint": "00a0cbd50932772b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a2f8be237274aeeb", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1689)"}, "properties": {"repobilityId": "7d35d26c042725be", "scanner": "scanner-primary", "fingerprint": "a2f8be237274aeeb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d769605aee500c52", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1741)"}, "properties": {"repobilityId": "4e204ebbaf76b003", "scanner": "scanner-primary", "fingerprint": "d769605aee500c52", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c837fb3d52c88058", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1802)"}, "properties": {"repobilityId": "44b134c82c0c23d4", "scanner": "scanner-primary", "fingerprint": "c837fb3d52c88058", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-53703bd29d91ab53", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1831)"}, "properties": {"repobilityId": "0d4ca6b242be485e", "scanner": "scanner-primary", "fingerprint": "53703bd29d91ab53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c975b5ddb868d578", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1853)"}, "properties": {"repobilityId": "b9da77c4b973cbca", "scanner": "scanner-primary", "fingerprint": "c975b5ddb868d578", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b9f84721a9eb208d", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1882)"}, "properties": {"repobilityId": "b9ef071e343bb0bd", "scanner": "scanner-primary", "fingerprint": "b9f84721a9eb208d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f0d667027c6afccd", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:1911)"}, "properties": {"repobilityId": "c655273e811c122f", "scanner": "scanner-primary", "fingerprint": "f0d667027c6afccd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1928f54cb2b9a264", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1934)"}, "properties": {"repobilityId": "172f01b9eb835e05", "scanner": "scanner-primary", "fingerprint": "1928f54cb2b9a264", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0837545d83907652", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:1970)"}, "properties": {"repobilityId": "6fba68217a37c2ff", "scanner": "scanner-primary", "fingerprint": "0837545d83907652", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ffac40d6a599983d", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2019)"}, "properties": {"repobilityId": "e6b33ce62cae753c", "scanner": "scanner-primary", "fingerprint": "ffac40d6a599983d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-950cf9eb122b05e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2071)"}, "properties": {"repobilityId": "16d6bc3581371b85", "scanner": "scanner-primary", "fingerprint": "950cf9eb122b05e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-122a7be54ae3911c", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2130)"}, "properties": {"repobilityId": "704b86a50d520030", "scanner": "scanner-primary", "fingerprint": "122a7be54ae3911c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-229c8fe20696d5b1", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/intent (tests/integration/security-hardening.test.ts:2151)"}, "properties": {"repobilityId": "1e0ccb5380f6dca3", "scanner": "scanner-primary", "fingerprint": "229c8fe20696d5b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-058ea59e9f88941b", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2192)"}, "properties": {"repobilityId": "51f33951ff74536f", "scanner": "scanner-primary", "fingerprint": "058ea59e9f88941b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-af391e4c2af94690", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2250)"}, "properties": {"repobilityId": "db1e96c71afa22f0", "scanner": "scanner-primary", "fingerprint": "af391e4c2af94690", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-aa9d9e0ca6cc8806", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2290)"}, "properties": {"repobilityId": "cfbd47e6a7789e03", "scanner": "scanner-primary", "fingerprint": "aa9d9e0ca6cc8806", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5343a9eb7f6a7d1c", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2330)"}, "properties": {"repobilityId": "5cf4293beca48867", "scanner": "scanner-primary", "fingerprint": "5343a9eb7f6a7d1c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e29ec1132ecfbd0", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2370)"}, "properties": {"repobilityId": "b50ef31c281bcb1b", "scanner": "scanner-primary", "fingerprint": "1e29ec1132ecfbd0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9e4b2c5f074361f6", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2419)"}, "properties": {"repobilityId": "5c5628976d40cc35", "scanner": "scanner-primary", "fingerprint": "9e4b2c5f074361f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6a38f339d114ad8b", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2442)"}, "properties": {"repobilityId": "1a72b87e342e3ce6", "scanner": "scanner-primary", "fingerprint": "6a38f339d114ad8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-67ec273812db0355", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/security-hardening.test.ts:2490)"}, "properties": {"repobilityId": "8dd72997710d2353", "scanner": "scanner-primary", "fingerprint": "67ec273812db0355", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-00d5c3ac847d66bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/matching/config (tests/integration/security-hardening.test.ts:2521)"}, "properties": {"repobilityId": "d2c1ae9f61796639", "scanner": "scanner-primary", "fingerprint": "00d5c3ac847d66bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-92138133e77202bc", "level": "error", "message": {"text": "Dangling fetch: PUT /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2562)"}, "properties": {"repobilityId": "9617fe8ccb4f7787", "scanner": "scanner-primary", "fingerprint": "92138133e77202bc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a2c0f66106cc3c28", "level": "error", "message": {"text": "Dangling fetch: GET /api/matching/driver-trips/trip-1 (tests/integration/security-hardening.test.ts:2613)"}, "properties": {"repobilityId": "9b19b0d42e4df59b", "scanner": "scanner-primary", "fingerprint": "a2c0f66106cc3c28", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-69f1e63cf3ded1d5", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2632)"}, "properties": {"repobilityId": "953b49aac0d0b64e", "scanner": "scanner-primary", "fingerprint": "69f1e63cf3ded1d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a52db98b434e776e", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/batch (tests/integration/security-hardening.test.ts:2692)"}, "properties": {"repobilityId": "fde94f704bcac8d0", "scanner": "scanner-primary", "fingerprint": "a52db98b434e776e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ca69b4e2b981e26f", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:2719)"}, "properties": {"repobilityId": "93b21e554308e756", "scanner": "scanner-primary", "fingerprint": "ca69b4e2b981e26f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9471ac559a21f674", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3207)"}, "properties": {"repobilityId": "8c998a418f529395", "scanner": "scanner-primary", "fingerprint": "9471ac559a21f674", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a83a38e728c44291", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/security-hardening.test.ts:3244)"}, "properties": {"repobilityId": "1727ae53b71def64", "scanner": "scanner-primary", "fingerprint": "a83a38e728c44291", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ebecfa929a89d437", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/security-hardening.test.ts:3279)"}, "properties": {"repobilityId": "d11d3c54494a82be", "scanner": "scanner-primary", "fingerprint": "ebecfa929a89d437", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7c67949e3546b2f6", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3288)"}, "properties": {"repobilityId": "f8353ed5612828fb", "scanner": "scanner-primary", "fingerprint": "7c67949e3546b2f6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8c8faf3b4aae156d", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3319)"}, "properties": {"repobilityId": "31ad5418aaabeac7", "scanner": "scanner-primary", "fingerprint": "8c8faf3b4aae156d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-17adf7fc573a769d", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/security-hardening.test.ts:3344)"}, "properties": {"repobilityId": "6f90a4ebd1a52ab7", "scanner": "scanner-primary", "fingerprint": "17adf7fc573a769d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0d74bc938e06d1d8", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/security-hardening.test.ts:3392)"}, "properties": {"repobilityId": "3d33f2ca43672225", "scanner": "scanner-primary", "fingerprint": "0d74bc938e06d1d8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0c5ec348b430c350", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3452)"}, "properties": {"repobilityId": "3ba68d634bfb7ed7", "scanner": "scanner-primary", "fingerprint": "0c5ec348b430c350", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37612511c3206374", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/users/account (tests/integration/security-hardening.test.ts:3487)"}, "properties": {"repobilityId": "34df60717bfd14b1", "scanner": "scanner-primary", "fingerprint": "37612511c3206374", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c2ff1cc6c4401483", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/55 (tests/integration/security-hardening.test.ts:3502)"}, "properties": {"repobilityId": "7ebf9a7e3892829c", "scanner": "scanner-primary", "fingerprint": "c2ff1cc6c4401483", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-008a107518755b70", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/users/2 (tests/integration/security-hardening.test.ts:3527)"}, "properties": {"repobilityId": "4449b4c555ba7714", "scanner": "scanner-primary", "fingerprint": "008a107518755b70", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5310c74a98f1460e", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:130)"}, "properties": {"repobilityId": "12af31692e8f127c", "scanner": "scanner-primary", "fingerprint": "5310c74a98f1460e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6df8ee25829641ac", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:141)"}, "properties": {"repobilityId": "13e9c3b76a4faac6", "scanner": "scanner-primary", "fingerprint": "6df8ee25829641ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-22f957f42047b3e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:166)"}, "properties": {"repobilityId": "20219aae991c498a", "scanner": "scanner-primary", "fingerprint": "22f957f42047b3e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bac1f2e27cd77bc7", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:179)"}, "properties": {"repobilityId": "72e3fd5c7c705764", "scanner": "scanner-primary", "fingerprint": "bac1f2e27cd77bc7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0ab3b0ce0b06eb72", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:191)"}, "properties": {"repobilityId": "f402f9b5422b2210", "scanner": "scanner-primary", "fingerprint": "0ab3b0ce0b06eb72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a682c8c486e3065", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:202)"}, "properties": {"repobilityId": "794eac6a9a1144ff", "scanner": "scanner-primary", "fingerprint": "5a682c8c486e3065", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-50bf47cb47b6cf60", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:221)"}, "properties": {"repobilityId": "9589c610cf172e3d", "scanner": "scanner-primary", "fingerprint": "50bf47cb47b6cf60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8225c897d9302741", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:268)"}, "properties": {"repobilityId": "44f62cba02f6acae", "scanner": "scanner-primary", "fingerprint": "8225c897d9302741", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-59a707bb83cce1ed", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:285)"}, "properties": {"repobilityId": "54d583a6df4c7b2e", "scanner": "scanner-primary", "fingerprint": "59a707bb83cce1ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4c34735f89524e61", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:306)"}, "properties": {"repobilityId": "732415011e2f076d", "scanner": "scanner-primary", "fingerprint": "4c34735f89524e61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1b68c6581f3c299f", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:315)"}, "properties": {"repobilityId": "0d3a31767383334b", "scanner": "scanner-primary", "fingerprint": "1b68c6581f3c299f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-26cc7b07aa21674e", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:334)"}, "properties": {"repobilityId": "f12f2eec0ce32ce6", "scanner": "scanner-primary", "fingerprint": "26cc7b07aa21674e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-938c825e6e2cc76e", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:377)"}, "properties": {"repobilityId": "7d98bc0d8c0f29c0", "scanner": "scanner-primary", "fingerprint": "938c825e6e2cc76e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6b4747c5c032a4a1", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/security (tests/integration/monitoring-routes-contracts.test.ts:393)"}, "properties": {"repobilityId": "f68b48e046dc91f1", "scanner": "scanner-primary", "fingerprint": "6b4747c5c032a4a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4c4dce1a31e14e5e", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:412)"}, "properties": {"repobilityId": "800bfbe85621e8a6", "scanner": "scanner-primary", "fingerprint": "4c4dce1a31e14e5e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d37f30aad407e66b", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:421)"}, "properties": {"repobilityId": "a4d5f6c9219c1b01", "scanner": "scanner-primary", "fingerprint": "d37f30aad407e66b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1c348625e6bc72b5", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:439)"}, "properties": {"repobilityId": "4a7f932ba8fd229e", "scanner": "scanner-primary", "fingerprint": "1c348625e6bc72b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6c5e71a48b039410", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:482)"}, "properties": {"repobilityId": "a5761930e6866e0b", "scanner": "scanner-primary", "fingerprint": "6c5e71a48b039410", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-23b3917d00c8e356", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:503)"}, "properties": {"repobilityId": "f1cf07f06ae177a7", "scanner": "scanner-primary", "fingerprint": "23b3917d00c8e356", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7adfcc8163d4d188", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:527)"}, "properties": {"repobilityId": "ef98f346a9c98114", "scanner": "scanner-primary", "fingerprint": "7adfcc8163d4d188", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-19d408dc5b8329b2", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/providers (tests/integration/monitoring-routes-contracts.test.ts:553)"}, "properties": {"repobilityId": "36776fe1834f7a01", "scanner": "scanner-primary", "fingerprint": "19d408dc5b8329b2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f1a463eac6faed8a", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/metrics (tests/integration/monitoring-routes-contracts.test.ts:567)"}, "properties": {"repobilityId": "4abaf3194db23ccf", "scanner": "scanner-primary", "fingerprint": "f1a463eac6faed8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8ca49183b88357e9", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:596)"}, "properties": {"repobilityId": "596dd6e31f922dcc", "scanner": "scanner-primary", "fingerprint": "8ca49183b88357e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fccfd6112f11ea72", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/health (tests/integration/monitoring-routes-contracts.test.ts:608)"}, "properties": {"repobilityId": "bf9058364cdbbb70", "scanner": "scanner-primary", "fingerprint": "fccfd6112f11ea72", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-56f5f06c38901c27", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/.well-known/security.txt (tests/integration/monitoring-routes-contracts.test.ts:618)"}, "properties": {"repobilityId": "92e6992c10ff2aa9", "scanner": "scanner-primary", "fingerprint": "56f5f06c38901c27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fe335928619063bf", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/humans.txt (tests/integration/monitoring-routes-contracts.test.ts:626)"}, "properties": {"repobilityId": "002e3666bbf306ad", "scanner": "scanner-primary", "fingerprint": "fe335928619063bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e67218f50c559bf2", "level": "error", "message": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:641)"}, "properties": {"repobilityId": "427ee4ae39202e43", "scanner": "scanner-primary", "fingerprint": "e67218f50c559bf2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4fafb100b2f0f12a", "level": "error", "message": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:654)"}, "properties": {"repobilityId": "50edea1a79d18721", "scanner": "scanner-primary", "fingerprint": "4fafb100b2f0f12a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f8df26b71059ff56", "level": "error", "message": {"text": "Dangling fetch: POST /api/monitoring/csp-report (tests/integration/monitoring-routes-contracts.test.ts:667)"}, "properties": {"repobilityId": "ba62ef133e8f42e5", "scanner": "scanner-primary", "fingerprint": "f8df26b71059ff56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-34db7c4b0ba61572", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:682)"}, "properties": {"repobilityId": "5c8a94026c201af8", "scanner": "scanner-primary", "fingerprint": "34db7c4b0ba61572", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b98da245fdcb4a50", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:692)"}, "properties": {"repobilityId": "86f0176f42b53ea1", "scanner": "scanner-primary", "fingerprint": "b98da245fdcb4a50", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-84a38a832c489643", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/sla (tests/integration/monitoring-routes-contracts.test.ts:707)"}, "properties": {"repobilityId": "5fdf4918272fa689", "scanner": "scanner-primary", "fingerprint": "84a38a832c489643", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6e7f3d4f86db2250", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:719)"}, "properties": {"repobilityId": "3f7097d0243c4ce4", "scanner": "scanner-primary", "fingerprint": "6e7f3d4f86db2250", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-04dfeeb2236ff3a8", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/performance (tests/integration/monitoring-routes-contracts.test.ts:734)"}, "properties": {"repobilityId": "ccc5d2532ac8cf59", "scanner": "scanner-primary", "fingerprint": "04dfeeb2236ff3a8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-94132e5694116cc9", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:743)"}, "properties": {"repobilityId": "76fa1d5c8c963ea5", "scanner": "scanner-primary", "fingerprint": "94132e5694116cc9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-442d3a596a77b3b3", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/errors (tests/integration/monitoring-routes-contracts.test.ts:758)"}, "properties": {"repobilityId": "fa3e1a5cb0216157", "scanner": "scanner-primary", "fingerprint": "442d3a596a77b3b3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c10a96256f1cabcc", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:767)"}, "properties": {"repobilityId": "43112d6da796d272", "scanner": "scanner-primary", "fingerprint": "c10a96256f1cabcc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee5069f69d95f89e", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/alerts (tests/integration/monitoring-routes-contracts.test.ts:781)"}, "properties": {"repobilityId": "d657716a17b2bf14", "scanner": "scanner-primary", "fingerprint": "ee5069f69d95f89e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-48474a2403e4867f", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:790)"}, "properties": {"repobilityId": "118a0128214d5c69", "scanner": "scanner-primary", "fingerprint": "48474a2403e4867f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2308468a51aba7cb", "level": "error", "message": {"text": "Dangling fetch: GET /api/monitoring/carbon (tests/integration/monitoring-routes-contracts.test.ts:805)"}, "properties": {"repobilityId": "58522955132bc60d", "scanner": "scanner-primary", "fingerprint": "2308468a51aba7cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b53a88a06b8af4f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/admin/documents/abc (tests/integration/documents-routes-contracts.test.ts:851)"}, "properties": {"repobilityId": "d835092218e8f08b", "scanner": "scanner-primary", "fingerprint": "2b53a88a06b8af4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c4f745d5a8a4e6f3", "level": "error", "message": {"text": "Dangling fetch: GET /api/trips/22/messages/since/2026-04-03T09:00:00.000Z (tests/integration/messages-routes-contracts.test.ts:172)"}, "properties": {"repobilityId": "e00aee6375a149bb", "scanner": "scanner-primary", "fingerprint": "c4f745d5a8a4e6f3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a04f94642c9f5fe8", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:116)"}, "properties": {"repobilityId": "eac6de6cdf410cb3", "scanner": "scanner-primary", "fingerprint": "a04f94642c9f5fe8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3268e87455ba764f", "level": "error", "message": {"text": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:140)"}, "properties": {"repobilityId": "3c915d7d719d27bf", "scanner": "scanner-primary", "fingerprint": "3268e87455ba764f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fd05d8ffcbc078a5", "level": "error", "message": {"text": "Dangling fetch: PUT /api/users/preferences (tests/integration/user-preferences.test.ts:190)"}, "properties": {"repobilityId": "7db69a7e8e236b46", "scanner": "scanner-primary", "fingerprint": "fd05d8ffcbc078a5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-affa22f067d3603e", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/preferences (tests/integration/user-preferences.test.ts:206)"}, "properties": {"repobilityId": "d5d7a2bbfee555e9", "scanner": "scanner-primary", "fingerprint": "affa22f067d3603e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-485a9fc0fede01e8", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/export (tests/integration/audit-taxonomy-contracts.test.ts:245)"}, "properties": {"repobilityId": "3e4bdf8d04fb57c4", "scanner": "scanner-primary", "fingerprint": "485a9fc0fede01e8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e37b24a7ab5c4b0", "level": "error", "message": {"text": "Dangling fetch: POST /api/matching/reject (tests/integration/audit-taxonomy-contracts.test.ts:366)"}, "properties": {"repobilityId": "ffd88baf2a3838d8", "scanner": "scanner-primary", "fingerprint": "7e37b24a7ab5c4b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf54d269c94a6445", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:414)"}, "properties": {"repobilityId": "323e6ce1d8b941f6", "scanner": "scanner-primary", "fingerprint": "cf54d269c94a6445", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-754e036fe2a64af4", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:435)"}, "properties": {"repobilityId": "9be06174617afd43", "scanner": "scanner-primary", "fingerprint": "754e036fe2a64af4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b8dbd1a4787fc53f", "level": "error", "message": {"text": "Dangling fetch: POST /api/payments/webhook (tests/integration/audit-taxonomy-contracts.test.ts:457)"}, "properties": {"repobilityId": "9260af7c31b8d160", "scanner": "scanner-primary", "fingerprint": "b8dbd1a4787fc53f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5da8adc354ed8dd9", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/notifications/1/read (tests/integration/notifications-routes.test.ts:188)"}, "properties": {"repobilityId": "58fa849868f8360b", "scanner": "scanner-primary", "fingerprint": "5da8adc354ed8dd9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-35aa9c3f293a8b93", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/notifications/999/read (tests/integration/notifications-routes.test.ts:205)"}, "properties": {"repobilityId": "f319a18658412dca", "scanner": "scanner-primary", "fingerprint": "35aa9c3f293a8b93", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-44e0422c2aeee1df", "level": "error", "message": {"text": "Dangling fetch: PATCH /api/notifications/7/read (tests/integration/notifications-routes.test.ts:307)"}, "properties": {"repobilityId": "c5415f131ecf5b4f", "scanner": "scanner-primary", "fingerprint": "44e0422c2aeee1df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-206af509d94fb230", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:127)"}, "properties": {"repobilityId": "c845d5ec5f9ba6a9", "scanner": "scanner-primary", "fingerprint": "206af509d94fb230", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f3cc62d74a3986f1", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:137)"}, "properties": {"repobilityId": "ac61481c96d2fcdc", "scanner": "scanner-primary", "fingerprint": "f3cc62d74a3986f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e40900331f9ad4da", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:149)"}, "properties": {"repobilityId": "e961f33b91379fb1", "scanner": "scanner-primary", "fingerprint": "e40900331f9ad4da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2b42aed3250988be", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:164)"}, "properties": {"repobilityId": "d4b6efb99201d59f", "scanner": "scanner-primary", "fingerprint": "2b42aed3250988be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-941b17fac2166934", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:181)"}, "properties": {"repobilityId": "2e502fccaf69d6a9", "scanner": "scanner-primary", "fingerprint": "941b17fac2166934", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b481ed302072a16c", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:196)"}, "properties": {"repobilityId": "121f681d69f5f883", "scanner": "scanner-primary", "fingerprint": "b481ed302072a16c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1d19e3f42b753d6f", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:211)"}, "properties": {"repobilityId": "a0ff36a90de7f086", "scanner": "scanner-primary", "fingerprint": "1d19e3f42b753d6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-deb36dac5c0b015e", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/7/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:229)"}, "properties": {"repobilityId": "32502a738602b175", "scanner": "scanner-primary", "fingerprint": "deb36dac5c0b015e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-abcb7ad41d77e549", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/42/carbon-certificate (tests/integration/carbon-certificate-contracts.test.ts:245)"}, "properties": {"repobilityId": "67d5d6cfcede1a7c", "scanner": "scanner-primary", "fingerprint": "abcb7ad41d77e549", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-098a6328285f06c4", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:147)"}, "properties": {"repobilityId": "1b2f006f76a35120", "scanner": "scanner-primary", "fingerprint": "098a6328285f06c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-846cd230d9fba3ef", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:164)"}, "properties": {"repobilityId": "c90f6aede794b383", "scanner": "scanner-primary", "fingerprint": "846cd230d9fba3ef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e8439f3ea422d13", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:600)"}, "properties": {"repobilityId": "0519b1dd72179454", "scanner": "scanner-primary", "fingerprint": "0e8439f3ea422d13", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-81326ce181cbeb94", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:623)"}, "properties": {"repobilityId": "3adcd63b3fabad39", "scanner": "scanner-primary", "fingerprint": "81326ce181cbeb94", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c9d4e909dcb803e5", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:645)"}, "properties": {"repobilityId": "12864ed551b8e4b1", "scanner": "scanner-primary", "fingerprint": "c9d4e909dcb803e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cca3ac744bba764b", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:667)"}, "properties": {"repobilityId": "0b08bcbb9c50c4d6", "scanner": "scanner-primary", "fingerprint": "cca3ac744bba764b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f38e7467a4af0ef1", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:687)"}, "properties": {"repobilityId": "c79da3e7670220ad", "scanner": "scanner-primary", "fingerprint": "f38e7467a4af0ef1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e4db9c26a56228aa", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:708)"}, "properties": {"repobilityId": "438f439486153ad1", "scanner": "scanner-primary", "fingerprint": "e4db9c26a56228aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ede2906df878f732", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:733)"}, "properties": {"repobilityId": "7b08753c2825bd1e", "scanner": "scanner-primary", "fingerprint": "ede2906df878f732", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-88d3176785ff9778", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:764)"}, "properties": {"repobilityId": "4fcfe551f364a954", "scanner": "scanner-primary", "fingerprint": "88d3176785ff9778", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37932cae4269de74", "level": "error", "message": {"text": "Dangling fetch: POST /api/push/send (tests/integration/push-routes-contracts.test.ts:799)"}, "properties": {"repobilityId": "0b574ecbb2ab0981", "scanner": "scanner-primary", "fingerprint": "37932cae4269de74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03a5b786f20ecba0", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:110)"}, "properties": {"repobilityId": "2a3777aa7c00adc8", "scanner": "scanner-primary", "fingerprint": "03a5b786f20ecba0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-353144239d3b2691", "level": "error", "message": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:138)"}, "properties": {"repobilityId": "5b7499ddaf942e82", "scanner": "scanner-primary", "fingerprint": "353144239d3b2691", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a217990f2ce8e47d", "level": "error", "message": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:161)"}, "properties": {"repobilityId": "79402f03f219f161", "scanner": "scanner-primary", "fingerprint": "a217990f2ce8e47d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a4edaf22e1a58ba", "level": "error", "message": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:204)"}, "properties": {"repobilityId": "1afb7dbb4c0074d0", "scanner": "scanner-primary", "fingerprint": "5a4edaf22e1a58ba", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-61afb83157b56970", "level": "error", "message": {"text": "Dangling fetch: POST /api/users/me/cookies (tests/unit/users.test.ts:256)"}, "properties": {"repobilityId": "b9104667f70622f4", "scanner": "scanner-primary", "fingerprint": "61afb83157b56970", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b728f25502f81b12", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:287)"}, "properties": {"repobilityId": "f27b30a21e148e61", "scanner": "scanner-primary", "fingerprint": "b728f25502f81b12", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-767107566b3178df", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/me/cookies (tests/unit/users.test.ts:303)"}, "properties": {"repobilityId": "4fdfab900f2f1c6b", "scanner": "scanner-primary", "fingerprint": "767107566b3178df", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9accfb1c2f63d429", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/preferences (tests/unit/users.test.ts:324)"}, "properties": {"repobilityId": "e53e19f77000a12f", "scanner": "scanner-primary", "fingerprint": "9accfb1c2f63d429", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-98f320d8138702bf", "level": "error", "message": {"text": "Dangling fetch: PUT /api/users/preferences (tests/unit/users.test.ts:354)"}, "properties": {"repobilityId": "79f2ca746c3a9c0b", "scanner": "scanner-primary", "fingerprint": "98f320d8138702bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-deafebb5f10a97e2", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/export (tests/unit/users.test.ts:415)"}, "properties": {"repobilityId": "98466d4fa473a3fa", "scanner": "scanner-primary", "fingerprint": "deafebb5f10a97e2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a298b743fc440ff7", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/users/account (tests/unit/users.test.ts:460)"}, "properties": {"repobilityId": "a42943d9caa20ee2", "scanner": "scanner-primary", "fingerprint": "a298b743fc440ff7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-33094e7bbf40eaaf", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:482)"}, "properties": {"repobilityId": "9e565f6a19af7372", "scanner": "scanner-primary", "fingerprint": "33094e7bbf40eaaf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-18a4e1b04e0a4a1b", "level": "error", "message": {"text": "Dangling fetch: GET /api/users/10/carbon-certificate (tests/unit/users.test.ts:507)"}, "properties": {"repobilityId": "d9633f6c5e960da7", "scanner": "scanner-primary", "fingerprint": "18a4e1b04e0a4a1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-02a95de2f1478d77", "level": "error", "message": {"text": "Dangling fetch: GET https://api.stripe.com/v1/healthcheck (src/lib/synthetic.ts:200)"}, "properties": {"repobilityId": "60fe8a42d0af3897", "scanner": "scanner-primary", "fingerprint": "02a95de2f1478d77", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-127c2b96760f5b05", "level": "error", "message": {"text": "Dangling fetch: GET https://api.sendgrid.com/v3/user/profile (src/lib/synthetic.ts:228)"}, "properties": {"repobilityId": "4e541145243ce8c4", "scanner": "scanner-primary", "fingerprint": "127c2b96760f5b05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-67ff31d97dcdeefb", "level": "error", "message": {"text": "Dangling fetch: GET https://haveibeenpwned.com/api/v3/breachedaccount/${encodeURIComponent(email)} (src/lib/hibp.ts:141)"}, "properties": {"repobilityId": "494d5c9375b3f2a8", "scanner": "scanner-primary", "fingerprint": "67ff31d97dcdeefb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cdc5171ea9818382", "level": "note", "message": {"text": "Unused endpoint: GET /admin/promo-codes"}, "properties": {"repobilityId": "f10681ab6266e2a5", "scanner": "scanner-primary", "fingerprint": "cdc5171ea9818382", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e8d9c70caed908e", "level": "note", "message": {"text": "Unused endpoint: POST /admin/promo-codes"}, "properties": {"repobilityId": "c9da0e4af36c6ac4", "scanner": "scanner-primary", "fingerprint": "6e8d9c70caed908e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fca649d6ac969649", "level": "note", "message": {"text": "Unused endpoint: GET /admin/analytics/trips-over-time"}, "properties": {"repobilityId": "f7e450d5e8633c40", "scanner": "scanner-primary", "fingerprint": "fca649d6ac969649", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b36892106ecdc9aa", "level": "note", "message": {"text": "Unused endpoint: POST /auth/refresh"}, "properties": {"repobilityId": "abc8e9f63325eb30", "scanner": "scanner-primary", "fingerprint": "b36892106ecdc9aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-09cf4d1f2a016fd7", "level": "note", "message": {"text": "Unused endpoint: POST /users/tos-accept"}, "properties": {"repobilityId": "739f1cfede341dbb", "scanner": "scanner-primary", "fingerprint": "09cf4d1f2a016fd7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b42c08955d435b40", "level": "note", "message": {"text": "Unused endpoint: POST /auth/mfa/setup"}, "properties": {"repobilityId": "f366d5c9e031b98d", "scanner": "scanner-primary", "fingerprint": "b42c08955d435b40", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b8d96c1b050d1a4", "level": "note", "message": {"text": "Unused endpoint: POST /auth/mfa/confirm"}, "properties": {"repobilityId": "d2ba00f7b98d62f8", "scanner": "scanner-primary", "fingerprint": "4b8d96c1b050d1a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c13e173efffb4a33", "level": "note", "message": {"text": "Unused endpoint: POST /auth/mfa/disable"}, "properties": {"repobilityId": "7dd5bbe954929f7f", "scanner": "scanner-primary", "fingerprint": "c13e173efffb4a33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d0d917091975d243", "level": "note", "message": {"text": "Unused endpoint: POST /subscriptions/"}, "properties": {"repobilityId": "66d7fcf9f660bcb5", "scanner": "scanner-primary", "fingerprint": "d0d917091975d243", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d695ff901caf3597", "level": "note", "message": {"text": "Unused endpoint: GET /subscriptions/"}, "properties": {"repobilityId": "55f26145c3119caf", "scanner": "scanner-primary", "fingerprint": "d695ff901caf3597", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2fe5b92648ca462", "level": "note", "message": {"text": "Unused endpoint: POST /auth/forgot-password"}, "properties": {"repobilityId": "1a9b760cc34d0651", "scanner": "scanner-primary", "fingerprint": "e2fe5b92648ca462", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-deb8df763a50c73a", "level": "note", "message": {"text": "Unused endpoint: POST /auth/reset-password"}, "properties": {"repobilityId": "5ce33a7b6abf3732", "scanner": "scanner-primary", "fingerprint": "deb8df763a50c73a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f8e95a01bfd05f17", "level": "note", "message": {"text": "Unused endpoint: GET /fee-allocations/sent"}, "properties": {"repobilityId": "0c90b0e303a67c6e", "scanner": "scanner-primary", "fingerprint": "f8e95a01bfd05f17", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8073f7bf758f6d0", "level": "note", "message": {"text": "Unused endpoint: USE /api/*"}, "properties": {"repobilityId": "933d660a34e060fc", "scanner": "scanner-primary", "fingerprint": "b8073f7bf758f6d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99719004fc06730e", "level": "note", "message": {"text": "Unused endpoint: USE /auth/login"}, "properties": {"repobilityId": "1305951dc16dfa12", "scanner": "scanner-primary", "fingerprint": "99719004fc06730e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd401363e4083fa1", "level": "note", "message": {"text": "Unused endpoint: USE /auth/register"}, "properties": {"repobilityId": "a4c0419cbfc01d87", "scanner": "scanner-primary", "fingerprint": "fd401363e4083fa1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6dc2198c82eb3c8b", "level": "note", "message": {"text": "Unused endpoint: USE /auth/forgot-password"}, "properties": {"repobilityId": "f8439aa909bbf985", "scanner": "scanner-primary", "fingerprint": "6dc2198c82eb3c8b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44462ba5247ee446", "level": "note", "message": {"text": "Unused endpoint: USE /auth/reset-password"}, "properties": {"repobilityId": "5f8c58ac4f69f6f6", "scanner": "scanner-primary", "fingerprint": "44462ba5247ee446", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7da6c0fc18a884bb", "level": "note", "message": {"text": "Unused endpoint: USE /auth/refresh"}, "properties": {"repobilityId": "441d4879a5e2a8d9", "scanner": "scanner-primary", "fingerprint": "7da6c0fc18a884bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6bd096c558658435", "level": "note", "message": {"text": "Unused endpoint: USE /auth/mfa/verify"}, "properties": {"repobilityId": "9f1094e1ecf1d5a8", "scanner": "scanner-primary", "fingerprint": "6bd096c558658435", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa40518ca2adfe62", "level": "note", "message": {"text": "Unused endpoint: USE /auth/mfa/backup"}, "properties": {"repobilityId": "ef242ea7ecc85c6e", "scanner": "scanner-primary", "fingerprint": "aa40518ca2adfe62", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9312bc8d9a2f4a5a", "level": "note", "message": {"text": "Unused endpoint: USE /payments/*"}, "properties": {"repobilityId": "7d64975529385f94", "scanner": "scanner-primary", "fingerprint": "9312bc8d9a2f4a5a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41ca327521509571", "level": "note", "message": {"text": "Unused endpoint: USE /matching/find"}, "properties": {"repobilityId": "29dbb8d2464e1df1", "scanner": "scanner-primary", "fingerprint": "41ca327521509571", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22e3b0afc42af433", "level": "note", "message": {"text": "Unused endpoint: USE /matching/find-pool"}, "properties": {"repobilityId": "545af2a554d4d23a", "scanner": "scanner-primary", "fingerprint": "22e3b0afc42af433", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e7701672d37d530", "level": "note", "message": {"text": "Unused endpoint: USE /notifications/*"}, "properties": {"repobilityId": "e3562a174e9de823", "scanner": "scanner-primary", "fingerprint": "0e7701672d37d530", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b16f438a5df00133", "level": "note", "message": {"text": "Unused endpoint: GET /humans.txt"}, "properties": {"repobilityId": "f63687ceb8608bf6", "scanner": "scanner-primary", "fingerprint": "b16f438a5df00133", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5cd6f90da6082d60", "level": "note", "message": {"text": "Unused endpoint: POST /api/events/token"}, "properties": {"repobilityId": "4efcac7aacb4d191", "scanner": "scanner-primary", "fingerprint": "5cd6f90da6082d60", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32af5edd087acbbc", "level": "note", "message": {"text": "Unused endpoint: GET /api/events"}, "properties": {"repobilityId": "b575726382eca1d5", "scanner": "scanner-primary", "fingerprint": "32af5edd087acbbc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "5b873c291b5c6d33", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9df76717b41aef91", "level": "note", "message": {"text": "Unused endpoint: GET /admin/*"}, "properties": {"repobilityId": "be190c597ab8bf0c", "scanner": "scanner-primary", "fingerprint": "9df76717b41aef91", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31b172e2a3f90ce1", "level": "note", "message": {"text": "Unused endpoint: GET /landing"}, "properties": {"repobilityId": "6a8a6967b1c97bde", "scanner": "scanner-primary", "fingerprint": "31b172e2a3f90ce1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b5d2434b2fc80e2", "level": "note", "message": {"text": "Unused endpoint: USE /api/trips/search"}, "properties": {"repobilityId": "cd16c1f3cb40e855", "scanner": "scanner-primary", "fingerprint": "2b5d2434b2fc80e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b88c5d0a22d92c9", "level": "note", "message": {"text": "Unused endpoint: USE /api/users/profile"}, "properties": {"repobilityId": "57e42df806ca7dc5", "scanner": "scanner-primary", "fingerprint": "3b88c5d0a22d92c9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6327e7d63f12d827", "level": "note", "message": {"text": "Unused endpoint: GET /contacts"}, "properties": {"repobilityId": "1b0d12c1c91362df", "scanner": "scanner-primary", "fingerprint": "6327e7d63f12d827", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4321271f647e2bd0", "level": "note", "message": {"text": "Unused endpoint: POST /contacts"}, "properties": {"repobilityId": "dd0240031cc78ddb", "scanner": "scanner-primary", "fingerprint": "4321271f647e2bd0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-02a10967349d1182", "level": "note", "message": {"text": "Unused endpoint: DELETE /contacts/:id"}, "properties": {"repobilityId": "0114da60ca1eb281", "scanner": "scanner-primary", "fingerprint": "02a10967349d1182", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf5a962fe6c76a44", "level": "note", "message": {"text": "Unused endpoint: POST /sos"}, "properties": {"repobilityId": "13e8e12bf50f58fa", "scanner": "scanner-primary", "fingerprint": "bf5a962fe6c76a44", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "99af822a4b4c46ce", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-304b6f2b403d93f7", "level": "note", "message": {"text": "Unused endpoint: POST /register"}, "properties": {"repobilityId": "19581a08e78df03e", "scanner": "scanner-primary", "fingerprint": "304b6f2b403d93f7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b3531962b36673e", "level": "note", "message": {"text": "Unused endpoint: GET /verify-email"}, "properties": {"repobilityId": "252fbdedeecb1eb8", "scanner": "scanner-primary", "fingerprint": "5b3531962b36673e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4257ec01219aa99a", "level": "note", "message": {"text": "Unused endpoint: POST /forgot-password"}, "properties": {"repobilityId": "644091d50e7ac787", "scanner": "scanner-primary", "fingerprint": "4257ec01219aa99a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68a5d356c0cac9e3", "level": "note", "message": {"text": "Unused endpoint: POST /reset-password"}, "properties": {"repobilityId": "f741802f979a5f40", "scanner": "scanner-primary", "fingerprint": "68a5d356c0cac9e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bb5bad5a1b88e6c0", "level": "note", "message": {"text": "Unused endpoint: POST /mfa/setup"}, "properties": {"repobilityId": "f7ef60570cdc2ba7", "scanner": "scanner-primary", "fingerprint": "bb5bad5a1b88e6c0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-19b6f5942eee7505", "level": "note", "message": {"text": "Unused endpoint: POST /mfa/confirm"}, "properties": {"repobilityId": "2d95f1c281b0d037", "scanner": "scanner-primary", "fingerprint": "19b6f5942eee7505", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5b20c1b658dae2b", "level": "note", "message": {"text": "Unused endpoint: POST /mfa/verify"}, "properties": {"repobilityId": "91fa328a5c8d8e95", "scanner": "scanner-primary", "fingerprint": "d5b20c1b658dae2b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-828fa215fde35bbc", "level": "note", "message": {"text": "Unused endpoint: POST /mfa/backup"}, "properties": {"repobilityId": "d182cca9959dc80a", "scanner": "scanner-primary", "fingerprint": "828fa215fde35bbc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-77e9ee433a6dcaa2", "level": "note", "message": {"text": "Unused endpoint: POST /mfa/disable"}, "properties": {"repobilityId": "a3b47bc8b6f24cfa", "scanner": "scanner-primary", "fingerprint": "77e9ee433a6dcaa2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ce17d6b092a81ca", "level": "note", "message": {"text": "Unused endpoint: POST /refresh"}, "properties": {"repobilityId": "57857807c53b97ca", "scanner": "scanner-primary", "fingerprint": "7ce17d6b092a81ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99fc36db98c134ce", "level": "note", "message": {"text": "Unused endpoint: POST /logout"}, "properties": {"repobilityId": "c0752dd0ec544c62", "scanner": "scanner-primary", "fingerprint": "99fc36db98c134ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c5d06c999404370", "level": "note", "message": {"text": "Unused endpoint: GET /google"}, "properties": {"repobilityId": "c76c60eb75245699", "scanner": "scanner-primary", "fingerprint": "5c5d06c999404370", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}