{"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_assumption_check", "name": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal:github-feedback-comment-165b27adf12638a0\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: wavespestcontrolfl/waves-customer-portal:github-feedback-comment-165b27adf12638a0\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-f"}, "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: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#296\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 296\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 55\nEdge"}, "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: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#340\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#340\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#340\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 340\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 26\nNode types: {'commit': 9, 'link_quality': 4, "}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#328\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'api_integration_gap': 1, 'data_schema_persistence': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_auth_guardrail_gap", "name": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "fullDescription": {"text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#344\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#344\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#344\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 344\nGraph consistency label: weak_supervision_needs_review\nNodes: 1"}, "properties": {"scanner": "foundry_dataset", "category": "auth", "severity": "critical", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#267\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 267\nGraph consistency label: cont"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "foundry_failing_ci_claim", "name": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal", "shortDescription": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "fullDescription": {"text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#333\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 333\nGraph consistency label: contradicted_by_ci_or_fail"}, "properties": {"scanner": "foundry_dataset", "category": "ci", "severity": "critical", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "scanner-a7eb10f4590a5aef", "name": "Stray `console.log` in TS/JS \u2014 monitor-deploy.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 monitor-deploy.js:6"}, "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-a706e0550656e1cf", "name": "Stray `console.log` in TS/JS \u2014 client/src/main.jsx:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/main.jsx:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7061ad0374835841", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/ScheduleCustomerSidebar.jsx:427", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/ScheduleCustomerSidebar.jsx:427"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b5e10fe61641f9d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCardOnFileSheet.jsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCardOnFileSheet.jsx:155"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1729ba4939f3581e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCheckoutSheet.jsx:254", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCheckoutSheet.jsx:254"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccce836607cceadf", "name": "Icon-only button without accessible name \u2014 client/src/components/schedule/CreateAppointmentModal.jsx:1228", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/schedule/CreateAppointmentModal.jsx:1228"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3afdbbcbf22c032", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCustomerDetailSheet.jsx:333", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCustomerDetailSheet.jsx:333"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9b79080a06468f1", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TreatmentPlanPanel.jsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TreatmentPlanPanel.jsx:38"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56d1986432425fdc", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:113"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48cb17487554b44b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:361", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:361"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8404eb3568b2e6db", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDay.jsx:419", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDay.jsx:419"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-668018737efd03aa", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServiceEditModal.jsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServiceEditModal.jsx:144"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8913ae39b87aa464", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:18", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:187"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3688a27110e03ca5", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDays.jsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDays.jsx:214"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b4b2af910fcc6aa", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/RevenuePanelV2.jsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/RevenuePanelV2.jsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fa81ee7efddb47f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechCard.jsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechCard.jsx:140"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a02f1a6914bd197f", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechDrawer.jsx:95", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechDrawer.jsx:95"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41bd73269782cb42", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/AlertCard.jsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/AlertCard.jsx:223"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9815f9d17c0cc33d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/JobDrawer.jsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/JobDrawer.jsx:312"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26d3a9532d32d39d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dashboard/charts.jsx:299", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dashboard/charts.jsx:299"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-545b94ff0a39d81c", "name": "Icon-only button without accessible name \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:256", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:256"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbe480f60947898f", "name": "Icon-only button without accessible name \u2014 client/src/components/tech/TechServicePhotosModal.jsx:138", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/TechServicePhotosModal.jsx:138"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c002d440baa4acc", "name": "Icon-only button without accessible name \u2014 client/src/components/tech/TechIntelligenceBar.jsx:181", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/TechIntelligenceBar.jsx:181"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a99e7ecdb0e5880", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarV2.jsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarV2.jsx:79"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac8b1a5d6f457e82", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/Customer360ProfileV2.jsx:2577", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/Customer360ProfileV2.jsx:2577"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65e6f3c4bcd8c56b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarShell.jsx:354", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarShell.jsx:354"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df18e5d2fc874ff0", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:180", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:180"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-faf0f688c417e2cd", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/ReportViewPage.jsx:4493", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/ReportViewPage.jsx:4493"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-338a6b7ea3575d4c", "name": "Icon-only button without accessible name \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:313", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:313"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-104028b7a74ed24a", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:660", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:660"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a6bc041a8f25264", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomersPageV2.jsx:318", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomersPageV2.jsx:318"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6840974e2c06063c", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailTemplatesPanelV2.jsx:643", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailTemplatesPanelV2.jsx:643"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03ce5b7eb927a2a6", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NotificationEventsTabV2.jsx:185", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NotificationEventsTabV2.jsx:185"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b49289a46d1d057e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:4045", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:4045"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee35863d803cb83b", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentRequestsPage.jsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentRequestsPage.jsx:269"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a28696e585e3d843", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentTemplatesPage.jsx:610", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentTemplatesPage.jsx:610"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fbe59fa6d361a9aa", "name": "Icon-only button without accessible name \u2014 client/src/pages/admin/TimeTrackingPage.jsx:3231", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/TimeTrackingPage.jsx:3231"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d20fedce89377ee", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CallLogTabV2.jsx:653", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CallLogTabV2.jsx:653"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9be87e31fcad62f9", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TriageInboxTabV2.jsx:303", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TriageInboxTabV2.jsx:303"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97027cffe7d5f141", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomerEstimatesPanel.jsx:239", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomerEstimatesPanel.jsx:239"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d59358bdcd8b4cc", "name": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/ReviewsPage.jsx:2063", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/ReviewsPage.jsx:2063"}, "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-064204b6059d0833", "name": "Icon-only button without accessible name \u2014 client/src/pages/admin/NewsletterTabs.jsx:1538", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/NewsletterTabs.jsx:1538"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-408d770287ecc23e", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterTabs.jsx:1444", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterTabs.jsx:1444"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e27dc1339534743", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DispatchPageV2.jsx:563", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DispatchPageV2.jsx:563"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6376fcc2b05af80", "name": "Icon-only button without accessible name \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:1748", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:1748"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-105c7508d0b414ac", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:2033", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:2033"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a059c2041278a4d", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterPage.jsx:278", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterPage.jsx:278"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed083fcba26e2375", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPageV2.jsx:489", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPageV2.jsx:489"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86c97bc369622561", "name": "Icon-only button without accessible name \u2014 client/src/pages/admin/SchedulePage.jsx:2804", "shortDescription": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/SchedulePage.jsx:2804"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86ef021844e3aeb9", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DashboardPageV2.jsx:763", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DashboardPageV2.jsx:763"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e90e650a62d2cbb", "name": "\"active\" state uses light bg in a dark theme \u2014 client/src/pages/admin/pipeline/UnifiedPipelineFilters.jsx:22", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 client/src/pages/admin/pipeline/UnifiedPipelineFilters.jsx:22"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40517aa0a50ab158", "name": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/pipeline/UnifiedPipelineView.jsx:643", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/pipeline/UnifiedPipelineView.jsx:643"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2155d40f379bacf0", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-content-agent.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-content-agent.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ca94d8108f77096", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-models.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-models.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-2e48429cb63201ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/geocode-customers.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/geocode-customers.js:29"}, "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-30c1075858d27793", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-retention-agent.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-retention-agent.js:7"}, "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-38058c33ecf5f815", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-wiki.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-wiki.js:52"}, "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-3b1506f011744ad3", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-managed-agent.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-managed-agent.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2a7dd1520952596", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-bi-agent.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-bi-agent.js:7"}, "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-2de154c4b99a7e89", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-backlink-strategy-agent.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-backlink-strategy-agent.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c4c401a6f2e2821", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-lead-response-agent.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-lead-response-agent.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17b21746327c45be", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-seo-keywords.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-seo-keywords.js:65"}, "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-556581b1987bd1bd", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-portal-brand.js:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-portal-brand.js:150"}, "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-8d6cc7bbcb8d665b", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-local-pricing.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-local-pricing.js:66"}, "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-af5ab442cc409178", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-customer-contact-fields.js:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-customer-contact-fields.js:147"}, "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-2f7f71d62012d2ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-knowledge-base.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-knowledge-base.js:41"}, "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-c8db0a6af4c70792", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-ical-appointments.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-ical-appointments.js:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-798e871b2396fbf9", "name": "Stray `console.log` in TS/JS \u2014 scripts/seeds/002_blog_posts.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seeds/002_blog_posts.js:51"}, "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-4ce4b598af7785bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/twilio/export-studio-flow.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/export-studio-flow.js:83"}, "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-78ee044734cf7efe", "name": "Stray `console.log` in TS/JS \u2014 scripts/twilio/verify-studio-flow-contract.js:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/verify-studio-flow-contract.js:258"}, "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-95d4a6e268b78e55", "name": "Stray `console.log` in TS/JS \u2014 scripts/twilio/set-inbound-voice-url.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/set-inbound-voice-url.js:95"}, "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-2a6b29e35a384257", "name": "Stray `console.log` in TS/JS \u2014 scripts/twilio/audit-inbound-routing.js:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/audit-inbound-routing.js:257"}, "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-15bcc85548b6b67b", "name": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/verify-vendor.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/verify-vendor.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-dd2f25d870651517", "name": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/sync-from-astro.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/sync-from-astro.js:52"}, "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-896997a1bc0cbded", "name": "Stray `console.log` in TS/JS \u2014 server/knexfile.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/knexfile.js:29"}, "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-03ca6dfcae0d94b2", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.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-69a50e6f18927dbf", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000010_tree_shrub_typed_cutover.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000010_tree_shrub_typed_cutover.js: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-988c5f2acfb767aa", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000001_bait_station_typed_flows.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000001_bait_station_typed_flows.js:82"}, "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-2d5a1b6a57356831", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000011_pest_landscape_complexity_tiers.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000011_pest_landscape_complexity_tiers.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-45b0506a40c517ed", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000001_newsletter_slug_indexability.js:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000001_newsletter_slug_indexability.js:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40b354fc36f80c8f", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000007_seed_scrape_sources_round2.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000007_seed_scrape_sources_round2.js:103"}, "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-16ea6bb2b2c0c823", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000003_event_ingestion_foundation.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000003_event_ingestion_foundation.js:138"}, "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-b305f9b30de15dd0", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:64"}, "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-b14cb026f40a562e", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000004_termite_install_pricing_april_2026.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000004_termite_install_pricing_april_2026.js:61"}, "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-f3a78a682bb6d932", "name": "TODO/FIXME marker in shipping code \u2014 server/models/migrations/20260401000069_tax_intelligence.js:80", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/models/migrations/20260401000069_tax_intelligence.js:80"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ec8ce77226ab137", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260615000001_link_pest_rodent_service_suffix_rows.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260615000001_link_pest_rodent_service_suffix_rows.js:34"}, "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-bec258c77916686a", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000023_termite_bait_graduation.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000023_termite_bait_graduation.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-0f88ddce26438e11", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9777675209d329d9", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260424000011_backfill_followup_next_touch_at.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260424000011_backfill_followup_next_touch_at.js:65"}, "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-6899a1d6448aa114", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000001_wordpress_fleet_monitoring.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000001_wordpress_fleet_monitoring.js:122"}, "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-1edafff272a54527", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000007_subscriber_region_zone.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000007_subscriber_region_zone.js:46"}, "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-511c89a3667070e9", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000005_seed_scrape_event_sources.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000005_seed_scrape_event_sources.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63e1142b0e25ffb0", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000009_review_dup_row_cleanup.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000009_review_dup_row_cleanup.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5bedfd599dfed12", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000003_backfill_call_log_to_phone_e164.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000003_backfill_call_log_to_phone_e164.js:50"}, "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-19f9747d9ce8c059", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000004_seed_ical_event_sources.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000004_seed_ical_event_sources.js:60"}, "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-0749b08dd764d8c2", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000012_rodent_family_typed_cutover.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000012_rodent_family_typed_cutover.js: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-6c21f3c90e8cf53c", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:37"}, "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-7b70423699e29d44", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000012_specialty_phase1_cutover.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000012_specialty_phase1_cutover.js:152"}, "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-98c2758070830b9c", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000002_seed_event_sources_round3.js:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000002_seed_event_sources_round3.js:127"}, "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-4cb00c39c316dcf5", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000002_multi_domain_seo.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000002_multi_domain_seo.js:92"}, "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-05c54dbecb66318b", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000005_mark_externally_replied_reviews.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000005_mark_externally_replied_reviews.js:50"}, "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-032ba5b00e830bea", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000031_combined_service_cutover.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000031_combined_service_cutover.js:149"}, "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-5ea89027770d1385", "name": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000013_flea_typed_cutover.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000013_flea_typed_cutover.js:58"}, "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-1442e766cb6a234c", "name": "Stray `console.log` in TS/JS \u2014 server/config/feature-gates.js:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/config/feature-gates.js:235"}, "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-e7a88c44793c88df", "name": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine-v1-adapter.regression.test.js:314", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine-v1-adapter.regression.test.js:314"}, "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-d1bc036daf477a52", "name": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine.regression.test.js:397", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine.regression.test.js:397"}, "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-29764459ea2db273", "name": "Stray `console.log` in TS/JS \u2014 server/tests/fixtures/regenerate-lawn-golden-master.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/fixtures/regenerate-lawn-golden-master.js:52"}, "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-99e6ca6d5205a69c", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/generate-indexnow-key.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/generate-indexnow-key.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d0a189dee768901", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/v2-promotion-readiness.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/v2-promotion-readiness.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8afa4971e80b9143", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/approve-autonomous-run.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/approve-autonomous-run.js:51"}, "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-7c67997a9814916e", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-gemini-extraction.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-gemini-extraction.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2229f336da9c86c5", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-orphan-call-log-rows.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-orphan-call-log-rows.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a06ea0c72fe4757", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/void-invoice-95304c72.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/void-invoice-95304c72.js:26"}, "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-35780de0355ee5d5", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-estimate-conversion-agent.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-estimate-conversion-agent.js:153"}, "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-974d540250c804cb", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-call-route-decisions.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-call-route-decisions.js:154"}, "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-56f1aa7b50aa8d11", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-existing-pages.js:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-existing-pages.js:193"}, "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-f38bc5971031676f", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-lead-activities-from-sms.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-lead-activities-from-sms.js:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8610e95bd2a810d2", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-spoke-topics.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-spoke-topics.js:40"}, "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-7c3aade7ba977d08", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/evaluate-agent-decision-fixtures.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/evaluate-agent-decision-fixtures.js:38"}, "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-ff9bb030f6a5fdc9", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/check-index-status.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check-index-status.js:68"}, "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-29c943ab2f72877b", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/check-content-registry-live-status.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check-content-registry-live-status.js:46"}, "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-7bbacda7b74fef04", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-internal-link-prs.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-internal-link-prs.js:50"}, "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-5cdb9d2f5c7d8e4b", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/import-gsc-links.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/import-gsc-links.js:38"}, "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-aa5b8eb3c0a6ad41", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-bank-audit.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-bank-audit.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-6bdb0674555e5c92", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-serp-profiler.js:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-serp-profiler.js:101"}, "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-ca0f40eb4693d0f5", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-autonomous-next.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-autonomous-next.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80215fe0c7c1109a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline-worker.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline-worker.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-4f31c66eda2ce4fb", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-broken-pdfs.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-broken-pdfs.js:63"}, "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-9a254494225e0872", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/import-claudeopedia-lawn-kb.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/import-claudeopedia-lawn-kb.js:73"}, "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-b3be7f588ce3635a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-population-worklist.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-population-worklist.js:46"}, "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-30081817cceb5d00", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/protected-pages.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/protected-pages.js:32"}, "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-5b2f11f6e36195ab", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/archive-stale-blog-rows.js:296", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/archive-stale-blog-rows.js:296"}, "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-b9847f904cc7d37b", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-call-extraction-replay-eval.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-call-extraction-replay-eval.js:42"}, "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-0b79a24638f57069", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/dump-unmapped-call-numbers.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/dump-unmapped-call-numbers.js:73"}, "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-d545dbf2504753b0", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-agent-dispatch.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-agent-dispatch.js:71"}, "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-715f611072bb6f27", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-interior-reentry-advisory.js:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-interior-reentry-advisory.js:136"}, "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-6d2e744ef79755bb", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-job-form-templates.js:357", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-job-form-templates.js:357"}, "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-b242f5ff0992a6a9", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline.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-82da3257be37d384", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/autonomous-engine-calibration.js:650", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/autonomous-engine-calibration.js:650"}, "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-5f225dd5486fbfa7", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-products-data-quality.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-products-data-quality.js:42"}, "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-ae07b84504947cf2", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-briefs.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-briefs.js:57"}, "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-7c6e90917951d5e6", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-internal-links.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-internal-links.js:58"}, "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-202eff7da3c0bc1a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-waveguard-protocol-material-costs.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-waveguard-protocol-material-costs.js:172"}, "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-96e2dd91fa87f738", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-competitor-gap-topics.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-competitor-gap-topics.js: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-5689bd26fd12ec21", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-one-time-placeholder-recurring.js:445", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-one-time-placeholder-recurring.js:445"}, "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-8fdee2b25a0e8b32", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-opportunity-miner.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-opportunity-miner.js:50"}, "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-d93eb8b3569ec2e0", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/export-agent-decision-fixtures.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/export-agent-decision-fixtures.js:63"}, "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-81d38a2a32c5e793", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-v2-shadow-path.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-v2-shadow-path.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c248ef2614c782f9", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-incident-eval.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-incident-eval.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0be4ecfe577e5e1e", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-customer-insights.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-customer-insights.js:50"}, "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-dd6ed788e58f0941", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-card-funding.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-card-funding.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-42e755f4cc9cc36b", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-prod-pricing-config.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-prod-pricing-config.js:149"}, "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-1b605b91a4c25986", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-content-registry.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-content-registry.js:69"}, "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-fab2deb3517d9953", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-comms-pr2.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-comms-pr2.js:83"}, "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-d8d5ba9f37d00764", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/test-image-generator.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-image-generator.js:53"}, "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-3b9feeece4049a93", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/migrate-beehiiv-subscribers.js:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/migrate-beehiiv-subscribers.js:254"}, "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-0b6bb8215a2882e6", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/export-reply-training-fixtures.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/export-reply-training-fixtures.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-d14a2cd77fc6d03c", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/impact-tracker.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/impact-tracker.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-461d98838f31ca58", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/smoke-lead-estimate-automation.js:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/smoke-lead-estimate-automation.js:192"}, "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-810f88b02346d57b", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/run-conversion-feedback.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-conversion-feedback.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-b247ba9691315cff", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-call-extraction-variance.js:670", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-call-extraction-variance.js:670"}, "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-cbf210754b087f0a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-invoice-followups.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-invoice-followups.js:52"}, "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-2f0d7d59ff97f3fb", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-address-validation.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-address-validation.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05eaa3b058f2255f", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-inventory-data-completion.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-inventory-data-completion.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1aa7580e7ef3145a", "name": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-intercept-briefs.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-intercept-briefs.js:41"}, "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-9f86bbb19c6cbab4", "name": "Stray `console.log` in TS/JS \u2014 server/routes/property-lookup-v2.js:296", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/property-lookup-v2.js:296"}, "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-0ab04e56e4e3434d", "name": "Stray `console.log` in TS/JS \u2014 server/routes/admin-seo-v2.js:441", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/admin-seo-v2.js:441"}, "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-19d2e71163bf4480", "name": "Stray `console.log` in TS/JS \u2014 server/routes/admin-health.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/admin-health.js:34"}, "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-f3d48570171b72a4", "name": "TODO/FIXME marker in shipping code \u2014 server/routes/schedule.js:129", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/schedule.js:129"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2deab13350fed1b2", "name": "TODO/FIXME marker in shipping code \u2014 server/routes/admin-inventory.js:2486", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/admin-inventory.js:2486"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb703600619f510d", "name": "Stray `console.log` in TS/JS \u2014 server/contract-tests/index.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/contract-tests/index.js:33"}, "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-6050253658ad509d", "name": "Stray `console.log` in TS/JS \u2014 server/contract-tests/reporters/console.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/contract-tests/reporters/console.js:40"}, "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-251e13f851f57edc", "name": "TODO/FIXME marker in shipping code \u2014 server/services/estimate-slot-availability.js:1142", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/services/estimate-slot-availability.js:1142"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0f42c276280a2fd", "name": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/test-engine.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/test-engine.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8279c1c1bc7a477f", "name": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/db-bridge.js:1492", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/db-bridge.js:1492"}, "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-df2a32198809f5e0", "name": "TODO/FIXME marker in shipping code \u2014 server/services/pricing-engine/constants.js:21", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 server/services/pricing-engine/constants.js:21"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5ec167976bde728", "name": "Insecure pattern 'exec_used' in monitor-deploy.js:12", "shortDescription": {"text": "Insecure pattern 'exec_used' in monitor-deploy.js:12"}, "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-f6d5b94f9adf7487", "name": "Insecure pattern 'node_child_process' in monitor-deploy.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in monitor-deploy.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f14c9bc6963148c3", "name": "Insecure pattern 'cors_wildcard' in AGENTS.md:279", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in AGENTS.md:279"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-83788bf7c9f5d317", "name": "Insecure pattern 'local_storage_auth_token' in client/src/utils/api.js:17", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/utils/api.js:17"}, "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-b4c61ad75e254150", "name": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/ReportViewPage.jsx:4493", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/ReportViewPage.jsx:4493"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93c99d6302536cd9", "name": "Insecure pattern 'local_storage_auth_token' in client/src/pages/AdminLoginPage.jsx:29", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/pages/AdminLoginPage.jsx:29"}, "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-ae2659f7c61ae570", "name": "Insecure pattern 'node_child_process' in server/scripts/import-claudeopedia-lawn-kb.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/scripts/import-claudeopedia-lawn-kb.js:16"}, "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-3011453bd50e09a7", "name": "Possible secret in server/routes/admin-inventory.js", "shortDescription": {"text": "Possible secret in server/routes/admin-inventory.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c8bd706951dfe703", "name": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/estimate-public.js:4237", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/estimate-public.js:4237"}, "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-c7bb51115763357a", "name": "Insecure pattern 'exec_used' in server/services/lawn-snapshot.js:373", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/services/lawn-snapshot.js:373"}, "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-ac5c7271ce66fc46", "name": "Insecure pattern 'exec_used' in server/services/lawn-recommendation-engine.js:256", "shortDescription": {"text": "Insecure pattern 'exec_used' in server/services/lawn-recommendation-engine.js:256"}, "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-99f16df17a670212", "name": "Insecure pattern 'node_child_process' in server/services/content/content-registry.js:7", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server/services/content/content-registry.js:7"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1df040180fcf8760", "name": "Very large file: client/src/components/schedule/CreateAppointmentModal.jsx (1990 lines)", "shortDescription": {"text": "Very large file: client/src/components/schedule/CreateAppointmentModal.jsx (1990 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-cb3a545069aba09d", "name": "Very large file: client/src/components/tech/CreateProjectModal.jsx (1252 lines)", "shortDescription": {"text": "Very large file: client/src/components/tech/CreateProjectModal.jsx (1252 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-c04b70cd994f0d0d", "name": "Very large file: client/src/components/admin/PricingLogicPanel.jsx (2556 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/PricingLogicPanel.jsx (2556 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-47f7b9e4a38107bb", "name": "Very large file: client/src/components/admin/Customer360ProfileV2.jsx (4208 lines)", "shortDescription": {"text": "Very large file: client/src/components/admin/Customer360ProfileV2.jsx (4208 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-10e95896282bff06", "name": "Very large file: client/src/lib/estimateEngine.js (2674 lines)", "shortDescription": {"text": "Very large file: client/src/lib/estimateEngine.js (2674 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-051da3aaf60336f0", "name": "Very large file: client/src/pages/ReportViewPage.jsx (7701 lines)", "shortDescription": {"text": "Very large file: client/src/pages/ReportViewPage.jsx (7701 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-b123f71b248f9c0b", "name": "Very large file: client/src/pages/PortalPage.jsx (11296 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PortalPage.jsx (11296 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-10cd96645320ab67", "name": "Very large file: client/src/pages/ProjectReportViewPage.jsx (1281 lines)", "shortDescription": {"text": "Very large file: client/src/pages/ProjectReportViewPage.jsx (1281 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-43ce91096f35571e", "name": "Very large file: client/src/pages/OnboardingPage.jsx (1411 lines)", "shortDescription": {"text": "Very large file: client/src/pages/OnboardingPage.jsx (1411 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-74654a4579eb96e4", "name": "Very large file: client/src/pages/QuotePage.jsx (1365 lines)", "shortDescription": {"text": "Very large file: client/src/pages/QuotePage.jsx (1365 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-918c8bb354f9b144", "name": "Very large file: client/src/pages/EstimateViewPage.jsx (2602 lines)", "shortDescription": {"text": "Very large file: client/src/pages/EstimateViewPage.jsx (2602 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-6cca03ecef311bcd", "name": "Very large file: client/src/pages/PayPageV2.jsx (1598 lines)", "shortDescription": {"text": "Very large file: client/src/pages/PayPageV2.jsx (1598 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-15ea31b9b32f38d1", "name": "Very large file: client/src/pages/admin/BlogPage.jsx (2946 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/BlogPage.jsx (2946 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-cf2d28498892e1b2", "name": "Very large file: client/src/pages/admin/CustomersPageV2.jsx (2127 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CustomersPageV2.jsx (2127 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-eca657853bf05e38", "name": "Very large file: client/src/pages/admin/SEOPage.jsx (6348 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/SEOPage.jsx (6348 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-4bf93e512c2d5b04", "name": "Very large file: client/src/pages/admin/EmailTemplatesPanelV2.jsx (2673 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EmailTemplatesPanelV2.jsx (2673 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-d4ba39e0c01d5905", "name": "Very large file: client/src/pages/admin/EstimatePage.jsx (7108 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EstimatePage.jsx (7108 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-0a55feacb2d1aa89", "name": "Very large file: client/src/pages/admin/ServiceLibraryPage.jsx (1918 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ServiceLibraryPage.jsx (1918 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-be4efd087ce99c83", "name": "Very large file: client/src/pages/admin/EstimateToolViewV2.jsx (7310 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EstimateToolViewV2.jsx (7310 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-73452eb01884824b", "name": "Very large file: client/src/pages/admin/LawnAssessmentPanel.jsx (1724 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/LawnAssessmentPanel.jsx (1724 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-b98599321468ce65", "name": "Very large file: client/src/pages/admin/TaxPage.jsx (3784 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/TaxPage.jsx (3784 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-a494be93958220b4", "name": "Very large file: client/src/pages/admin/CustomerHealthTabs.jsx (1730 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CustomerHealthTabs.jsx (1730 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-d3d966c7a6a97935", "name": "Very large file: client/src/pages/admin/LawnProtocolCommandCenterPage.jsx (1663 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/LawnProtocolCommandCenterPage.jsx (1663 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-96d88c017924c481", "name": "Very large file: client/src/pages/admin/TimeTrackingPage.jsx (4791 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/TimeTrackingPage.jsx (4791 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-6243d2c4443a29b4", "name": "Very large file: client/src/pages/admin/InventoryPage.jsx (5371 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/InventoryPage.jsx (5371 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-c9fdbee9e82f4ae3", "name": "Very large file: client/src/pages/admin/CallLogTabV2.jsx (1312 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CallLogTabV2.jsx (1312 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-ba285c00a5723fed", "name": "Very large file: client/src/pages/admin/LeadsTabs.jsx (3937 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/LeadsTabs.jsx (3937 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-d664efdb49a22edf", "name": "Very large file: client/src/pages/admin/CommunicationsPage.jsx (3405 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CommunicationsPage.jsx (3405 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-0c78bf2853fe8b3b", "name": "Very large file: client/src/pages/admin/GBPManagement.jsx (2206 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/GBPManagement.jsx (2206 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-f169c37bc77e336b", "name": "Very large file: client/src/pages/admin/BankingPage.jsx (1832 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/BankingPage.jsx (1832 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-a13ccc29c47bb69b", "name": "Very large file: client/src/pages/admin/ReviewsPage.jsx (3530 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ReviewsPage.jsx (3530 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-9d2d04cc7b0406f0", "name": "Very large file: client/src/pages/admin/NewsletterTabs.jsx (2257 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/NewsletterTabs.jsx (2257 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-b7fd3553759c9aea", "name": "Very large file: client/src/pages/admin/AdminInvoicesPage.jsx (5345 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/AdminInvoicesPage.jsx (5345 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-98735f1c40fb7208", "name": "Very large file: client/src/pages/admin/AdsPage.jsx (4475 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/AdsPage.jsx (4475 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-a56f1af10f846dcb", "name": "Very large file: client/src/pages/admin/EquipmentMaintenancePage.jsx (2771 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EquipmentMaintenancePage.jsx (2771 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-c37716b929a8fa0f", "name": "Very large file: client/src/pages/admin/DispatchPageV2.jsx (2564 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/DispatchPageV2.jsx (2564 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-60e0f1417528c179", "name": "Very large file: client/src/pages/admin/ProjectsPage.jsx (3224 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ProjectsPage.jsx (3224 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-85575fa6072ba99d", "name": "Very large file: client/src/pages/admin/ReviewVelocityEngine.jsx (2174 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ReviewVelocityEngine.jsx (2174 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-a08f7c0406820c74", "name": "Very large file: client/src/pages/admin/CustomersPage.jsx (2369 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CustomersPage.jsx (2369 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-6360187625891f4a", "name": "Very large file: client/src/pages/admin/EstimatesPageV2.jsx (3787 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EstimatesPageV2.jsx (3787 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-67af2dc3fa1886be", "name": "Very large file: client/src/pages/admin/NewsletterPage.jsx (1624 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/NewsletterPage.jsx (1624 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-597667a4d306403a", "name": "Very large file: client/src/pages/admin/CommunicationsPageV2.jsx (2289 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CommunicationsPageV2.jsx (2289 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-ed7139e788a59e21", "name": "Very large file: client/src/pages/admin/SocialMediaPage.jsx (2555 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/SocialMediaPage.jsx (2555 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-bb2bd4c8d110e587", "name": "Very large file: client/src/pages/admin/ReferralsPageV2.jsx (1741 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/ReferralsPageV2.jsx (1741 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-b4fd293ac319c0a1", "name": "Very large file: client/src/pages/admin/CustomerHealthPage.jsx (1797 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/CustomerHealthPage.jsx (1797 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-6b2f63ea6fc88c73", "name": "Very large file: client/src/pages/admin/SchedulePage.jsx (13264 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/SchedulePage.jsx (13264 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-703857d0d4378557", "name": "Very large file: client/src/pages/admin/EmailPage.jsx (1690 lines)", "shortDescription": {"text": "Very large file: client/src/pages/admin/EmailPage.jsx (1690 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-7e00491c5e1b63a6", "name": "Very large file: server/tests/service-report-v1.test.js (2514 lines)", "shortDescription": {"text": "Very large file: server/tests/service-report-v1.test.js (2514 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-64e98071f879b1fc", "name": "Very large file: server/tests/estimate-public-onetime-breakdown.test.js (5659 lines)", "shortDescription": {"text": "Very large file: server/tests/estimate-public-onetime-breakdown.test.js (5659 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-8d7ffe51d40b42c9", "name": "Very large file: server/tests/autonomous-runner.test.js (2253 lines)", "shortDescription": {"text": "Very large file: server/tests/autonomous-runner.test.js (2253 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-4530a2d8031aa77d", "name": "Very large file: server/tests/newsletter.test.js (2241 lines)", "shortDescription": {"text": "Very large file: server/tests/newsletter.test.js (2241 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-bd0fe98c069ea04a", "name": "Very large file: server/tests/estimate-deposits.test.js (1313 lines)", "shortDescription": {"text": "Very large file: server/tests/estimate-deposits.test.js (1313 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-69f46098e9e26ebb", "name": "Very large file: server/tests/blog-astro-pipeline.test.js (1942 lines)", "shortDescription": {"text": "Very large file: server/tests/blog-astro-pipeline.test.js (1942 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-91d96b7936b240cf", "name": "Very large file: server/routes/admin-dispatch.js (6087 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-dispatch.js (6087 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-44e780fb83aa855a", "name": "Very large file: server/routes/admin-projects.js (3546 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-projects.js (3546 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-907e58d91ade6236", "name": "Very large file: server/routes/admin-timetracking.js (1252 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-timetracking.js (1252 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-384b11e6d21f1358", "name": "Very large file: server/routes/admin-invoices.js (1454 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-invoices.js (1454 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-becd7da85ead94cb", "name": "Very large file: server/routes/admin-customers.js (2245 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-customers.js (2245 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-177e5980b2e40764", "name": "Very large file: server/routes/property-lookup-v2.js (2937 lines)", "shortDescription": {"text": "Very large file: server/routes/property-lookup-v2.js (2937 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-8cb4f73ab7b2c2fe", "name": "Very large file: server/routes/admin-estimates.js (1479 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-estimates.js (1479 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-5e1bb426432f2426", "name": "Very large file: server/routes/admin-lawn-assessment.js (1481 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-lawn-assessment.js (1481 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-056da0e40e7e0552", "name": "Very large file: server/routes/admin-agents.js (1563 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-agents.js (1563 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-316096d73f3db356", "name": "Very large file: server/routes/admin-communications.js (1658 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-communications.js (1658 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-942f835265dd935a", "name": "Very large file: server/routes/admin-tax.js (1349 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-tax.js (1349 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-d9f876bcb026241d", "name": "Very large file: server/routes/stripe-webhook.js (2099 lines)", "shortDescription": {"text": "Very large file: server/routes/stripe-webhook.js (2099 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-17adb2b91b83876c", "name": "Very large file: server/routes/admin-schedule.js (5055 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-schedule.js (5055 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-ba16c0dc9a43b59a", "name": "Very large file: server/routes/admin-intelligence-bar.js (1399 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-intelligence-bar.js (1399 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-9b85a379eddcacce", "name": "Very large file: server/routes/admin-newsletter.js (2131 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-newsletter.js (2131 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-85de43f360e810d8", "name": "Very large file: server/routes/admin-inventory.js (3351 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-inventory.js (3351 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-10e03595c5004d66", "name": "Very large file: server/routes/admin-protocols.js (2494 lines)", "shortDescription": {"text": "Very large file: server/routes/admin-protocols.js (2494 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-3ed25fe1b04e54f9", "name": "Very large file: server/routes/estimate-public.js (10410 lines)", "shortDescription": {"text": "Very large file: server/routes/estimate-public.js (10410 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-46b17f4567cfac43", "name": "Very large file: server/services/estimate-converter.js (1449 lines)", "shortDescription": {"text": "Very large file: server/services/estimate-converter.js (1449 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-0c9c372b85cdc970", "name": "Very large file: server/services/newsletter-draft.js (1402 lines)", "shortDescription": {"text": "Very large file: server/services/newsletter-draft.js (1402 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-a25bdc7df22199fa", "name": "Very large file: server/services/scheduler.js (2710 lines)", "shortDescription": {"text": "Very large file: server/services/scheduler.js (2710 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-4540e332a1efce33", "name": "Very large file: server/services/estimate-slot-availability.js (1310 lines)", "shortDescription": {"text": "Very large file: server/services/estimate-slot-availability.js (1310 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-90de75c58a39088e", "name": "Very large file: server/services/project-types.js (940 lines)", "shortDescription": {"text": "Very large file: server/services/project-types.js (940 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-c655c6e91224cf95", "name": "Very large file: server/services/invoice.js (2512 lines)", "shortDescription": {"text": "Very large file: server/services/invoice.js (2512 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-e83511e447ba8b41", "name": "Very large file: server/services/social-content-studio.js (1619 lines)", "shortDescription": {"text": "Very large file: server/services/social-content-studio.js (1619 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-6a17ff43d178c22c", "name": "Very large file: server/services/social-media.js (1435 lines)", "shortDescription": {"text": "Very large file: server/services/social-media.js (1435 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-50dc171b40a559a9", "name": "Very large file: server/services/call-recording-processor.js (2877 lines)", "shortDescription": {"text": "Very large file: server/services/call-recording-processor.js (2877 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-2807e6730d232e78", "name": "Very large file: server/services/waveguard-plan-engine.js (1636 lines)", "shortDescription": {"text": "Very large file: server/services/waveguard-plan-engine.js (1636 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-b52a5d0c646abf06", "name": "Very large file: server/services/stripe.js (2233 lines)", "shortDescription": {"text": "Very large file: server/services/stripe.js (2233 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-6e2cb88d946ca424", "name": "Very large file: server/services/content-astro/astro-publisher.js (2283 lines)", "shortDescription": {"text": "Very large file: server/services/content-astro/astro-publisher.js (2283 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-a58bf1af6a8359c5", "name": "Very large file: server/services/pricing-engine/service-pricing.js (6644 lines)", "shortDescription": {"text": "Very large file: server/services/pricing-engine/service-pricing.js (6644 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-5ada5660ad4bc60a", "name": "Very large file: server/services/pricing-engine/estimate-engine.js (1501 lines)", "shortDescription": {"text": "Very large file: server/services/pricing-engine/estimate-engine.js (1501 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-c4a380976d42788f", "name": "Very large file: server/services/pricing-engine/db-bridge.js (1515 lines)", "shortDescription": {"text": "Very large file: server/services/pricing-engine/db-bridge.js (1515 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-8ff0cd3c40df065e", "name": "Very large file: server/services/pricing-engine/constants.js (1678 lines)", "shortDescription": {"text": "Very large file: server/services/pricing-engine/constants.js (1678 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-52c2ad77293a1588", "name": "Very large file: server/services/service-report/activity-indicators.js (2254 lines)", "shortDescription": {"text": "Very large file: server/services/service-report/activity-indicators.js (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-340c635e0ad092bd", "name": "Very large file: server/services/service-report/report-data.js (2364 lines)", "shortDescription": {"text": "Very large file: server/services/service-report/report-data.js (2364 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-54be6037df1a7412", "name": "Very large file: server/services/property-lookup/ai-property-lookup.js (3105 lines)", "shortDescription": {"text": "Very large file: server/services/property-lookup/ai-property-lookup.js (3105 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-37d6da9f2bcb9c8f", "name": "Very large file: server/services/intelligence-bar/seo-tools.js (1543 lines)", "shortDescription": {"text": "Very large file: server/services/intelligence-bar/seo-tools.js (1543 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-b21e15d9acea524d", "name": "Very large file: server/services/content/autonomous-runner.js (2565 lines)", "shortDescription": {"text": "Very large file: server/services/content/autonomous-runner.js (2565 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-b1f6208a72485d52", "name": "Very large file: server/services/content/internal-link-pr-executor.js (1306 lines)", "shortDescription": {"text": "Very large file: server/services/content/internal-link-pr-executor.js (1306 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-14fc80c743fd872a", "name": "Very large file: server/services/seo/gsc-opportunity-miner.js (1242 lines)", "shortDescription": {"text": "Very large file: server/services/seo/gsc-opportunity-miner.js (1242 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-1a6aeb84f8544549", "name": "Node manifest has dependencies but no lockfile: client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: client/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7101ca1926e3342", "name": "Node manifest has dependencies but no lockfile: server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: server/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 875 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 677 placeholder/mock markers across 163 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "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, ci, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-c063be2d5862df3d", "name": "Agent instruction/config may expose a secret: CODEX.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CODEX.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbb5857940ba0dc2", "name": "Agent instruction/config may expose a secret: AGENTS.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: AGENTS.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-994e17ccd192d33f", "name": "Agent authority lacks a verifier contract: .claude/vendor-codes.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/vendor-codes.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b354082ae4e9594c", "name": "Agent authority lacks a verifier contract: .claude/commands/local-seo-audit.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/local-seo-audit.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b80330623ba78416", "name": "Commented-code block (5 lines) in client/public/sw.js:132", "shortDescription": {"text": "Commented-code block (5 lines) in client/public/sw.js:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18e741160bc357be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/sw.js:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/sw.js:87"}, "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-612f6673902637c6", "name": "Commented-code block (5 lines) in client/public/push-subscribe.js:29", "shortDescription": {"text": "Commented-code block (5 lines) in client/public/push-subscribe.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9c4b2523c0a5e68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/push-subscribe.js:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/push-subscribe.js:114"}, "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-fbc89e82ea8a694b", "name": "Commented-code block (8 lines) in client/src/theme-brand.js:74", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/theme-brand.js:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1262bead7ec6a07", "name": "Commented-code block (5 lines) in client/src/utils/admin-fetch.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/utils/admin-fetch.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-743276f023714a21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/admin-fetch.js:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/admin-fetch.js:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a753c92983909f14", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/api.js:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/api.js:62"}, "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-f2fe4376f87a4ca7", "name": "Commented-code block (6 lines) in client/src/components/PestPressureCard.jsx:155", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/PestPressureCard.jsx:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3605a7fc626292fa", "name": "Commented-code block (7 lines) in client/src/components/NewsletterSignup.jsx:15", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/NewsletterSignup.jsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f77827fb4d89890a", "name": "Commented-code block (5 lines) in client/src/components/Button.jsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/Button.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4300ea7703d2be6", "name": "Commented-code block (6 lines) in client/src/components/NotificationBell.jsx:55", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/NotificationBell.jsx:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b8e5ae3b190d574", "name": "Commented-code block (5 lines) in client/src/components/schedule/MobileCardOnFileSheet.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileCardOnFileSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b935e1742ca9555d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/CalendarViewsV2.jsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/CalendarViewsV2.jsx:55"}, "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-fe8cff0dc6d91510", "name": "Commented-code block (15 lines) in client/src/components/schedule/MobileCheckoutSheet.jsx:11", "shortDescription": {"text": "Commented-code block (15 lines) in client/src/components/schedule/MobileCheckoutSheet.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5194c1cc1fe5739", "name": "Commented-code block (7 lines) in client/src/components/schedule/CreateAppointmentModal.jsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/schedule/CreateAppointmentModal.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6366f924418435a", "name": "Commented-code block (7 lines) in client/src/components/schedule/MobileCustomerDetailSheet.jsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/schedule/MobileCustomerDetailSheet.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58820818dd547de3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:14"}, "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-940e474eccd42ede", "name": "Commented-code block (6 lines) in client/src/components/schedule/MobileManualCardSheet.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileManualCardSheet.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b0f0153e243b9cf", "name": "Commented-code block (6 lines) in client/src/components/schedule/MobileAppointmentDetailSheet.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileAppointmentDetailSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45218296ff6e80dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:25"}, "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-e2fef68399a7ca04", "name": "Commented-code block (7 lines) in client/src/components/schedule/MobilePaymentSheet.jsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/schedule/MobilePaymentSheet.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d50ccff1148fa385", "name": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDay.jsx:603", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDay.jsx:603"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0bce8336661d518", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/ScheduleListView.jsx:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/ScheduleListView.jsx:8"}, "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-147f40196cc7d9a3", "name": "Commented-code block (5 lines) in client/src/components/schedule/MobileCheckTenderSheet.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileCheckTenderSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52ec0f9698699072", "name": "Commented-code block (6 lines) in client/src/components/schedule/MobileDispatchList.jsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileDispatchList.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2d132da55f26362", "name": "Commented-code block (7 lines) in client/src/components/schedule/RecurringAlertsBannerV2.jsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/schedule/RecurringAlertsBannerV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dedb0600c22521e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/RecurringAlertsBannerV2.jsx:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/RecurringAlertsBannerV2.jsx:14"}, "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-d2ea4ebc64177c87", "name": "Commented-code block (5 lines) in client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-853868b4986fa29f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aed87f587169fce0", "name": "Commented-code block (6 lines) in client/src/components/schedule/MobileCashTenderSheet.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileCashTenderSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3d174b0b7426be5", "name": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDays.jsx:667", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDays.jsx:667"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d5c91f7a121f951", "name": "Legacy-named symbol `waves_dispatch_zoom_v2` in client/src/components/schedule/MobileWeekGrid.jsx:34", "shortDescription": {"text": "Legacy-named symbol `waves_dispatch_zoom_v2` in client/src/components/schedule/MobileWeekGrid.jsx:34"}, "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-b08108c00dbebc51", "name": "Commented-code block (5 lines) in client/src/components/brand/WavesShell.jsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/brand/WavesShell.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12c32f490b323c46", "name": "Commented-code block (8 lines) in client/src/components/dispatch/InsightsPanelV2.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/dispatch/InsightsPanelV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6a827a59e8e8c9c", "name": "Commented-code block (8 lines) in client/src/components/dispatch/RevenuePanelV2.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/components/dispatch/RevenuePanelV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8149c5e45c5f15f", "name": "Commented-code block (7 lines) in client/src/components/dispatch/DispatchBoardLayout.jsx:36", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/dispatch/DispatchBoardLayout.jsx:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122da9e888b18f2f", "name": "Commented-code block (5 lines) in client/src/components/dispatch/JobDrawer.jsx:96", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/dispatch/JobDrawer.jsx:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eef7a7bb42a30d5b", "name": "Commented-code block (6 lines) in client/src/components/dispatch/DispatchMap.jsx:95", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/dispatch/DispatchMap.jsx:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6146c3d8c82860c8", "name": "Commented-code block (5 lines) in client/src/components/dashboard/charts.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/dashboard/charts.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ccf9cc4b105fb86", "name": "Commented-code block (5 lines) in client/src/components/tech/CreateProjectModal.jsx:152", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/tech/CreateProjectModal.jsx:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eabea1ce4ee11969", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15d774f0807312ad", "name": "Commented-code block (5 lines) in client/src/components/tech/TechServicePhotosModal.jsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/tech/TechServicePhotosModal.jsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e505508e73a8738e", "name": "Commented-code block (6 lines) in client/src/components/tech/WdoIntelligenceBar.jsx:76", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/tech/WdoIntelligenceBar.jsx:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e9cd88e8498f5b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/TechIntelligenceBar.jsx:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/TechIntelligenceBar.jsx:18"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93cc66dcea866be5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/equipment/MileageTab.jsx:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/equipment/MileageTab.jsx:8"}, "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-9899629f988d13f2", "name": "Commented-code block (5 lines) in client/src/components/billing/AutopayCard.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/billing/AutopayCard.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf2fbb8c28f57ef3", "name": "Legacy-named symbol `revokeOld` in client/src/components/admin/ServiceOutlineComposerModal.jsx:279", "shortDescription": {"text": "Legacy-named symbol `revokeOld` in client/src/components/admin/ServiceOutlineComposerModal.jsx:279"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0343d96a583574e", "name": "Commented-code block (6 lines) in client/src/components/admin/MobileSettingsPage.jsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/MobileSettingsPage.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ee1cf571bbe4ae3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PricingLogicPanel.jsx:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PricingLogicPanel.jsx:22"}, "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-60b46f413ee483a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntegrationHealthSection.jsx:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntegrationHealthSection.jsx:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7142f44600cd4168", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntelligenceBar.jsx:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntelligenceBar.jsx:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2fdc9463f2fcd6c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettings.jsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettings.jsx:25"}, "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-e98ac9eca63e5ae4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ProcurementIntelligenceBar.jsx:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ProcurementIntelligenceBar.jsx:32"}, "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-07aaee501a7dcb73", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/DashboardIntelligenceBar.jsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/DashboardIntelligenceBar.jsx:33"}, "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-9ada41db56139330", "name": "Commented-code block (5 lines) in client/src/components/admin/CallBridgeLink.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/admin/CallBridgeLink.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9b4153df203536d", "name": "Commented-code block (6 lines) in client/src/components/admin/PushSettingsV2.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/PushSettingsV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9683b1ebc522bff9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettingsV2.jsx:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettingsV2.jsx:40"}, "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-aef6643e8bfbc9ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/GlobalCommandPalette.jsx:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/GlobalCommandPalette.jsx:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d9d239a270d8350", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/SEOIntelligenceBar.jsx:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/SEOIntelligenceBar.jsx:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-243677fed62a4d86", "name": "Commented-code block (6 lines) in client/src/components/admin/NotificationBell.jsx:59", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/components/admin/NotificationBell.jsx:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9743f46f1fe45c16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/NotificationBell.jsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/NotificationBell.jsx:30"}, "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-7b704a9d13e59fa2", "name": "Commented-code block (7 lines) in client/src/components/admin/MobileNewCustomerSheet.jsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/admin/MobileNewCustomerSheet.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cbb7310cf6d341b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/RevenueIntelligenceBar.jsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/RevenueIntelligenceBar.jsx:30"}, "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-19f55338016d759d", "name": "Commented-code block (7 lines) in client/src/components/admin/EstimateModalsV2.jsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/components/admin/EstimateModalsV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01597f5cdfa7a12f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EstimateModalsV2.jsx:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EstimateModalsV2.jsx:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a9b737df3d2e73d", "name": "Legacy-named symbol `inferred_v1` in client/src/components/admin/MobileServiceLibrary.jsx:975", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in client/src/components/admin/MobileServiceLibrary.jsx:975"}, "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-2b33319125e46c45", "name": "Commented-code block (5 lines) in client/src/components/admin/MobileServiceLibrary.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/components/admin/MobileServiceLibrary.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57338dd09ccfc2d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9ef651fa9ead421", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ReferralTab.jsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ReferralTab.jsx:6"}, "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-ffb436ae63bd3df1", "name": "Commented-code block (10 lines) in client/src/lib/estimateEngine.js:1711", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/lib/estimateEngine.js:1711"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3a06071f7c74f7f", "name": "Commented-code block (5 lines) in client/src/lib/wdoReportFields.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/lib/wdoReportFields.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-290c6354a9dece74", "name": "Commented-code block (6 lines) in client/src/lib/push-subscribe.js:29", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/lib/push-subscribe.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d304867f6de39f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/push-subscribe.js:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/push-subscribe.js:120"}, "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-5cabfdd76f0bc620", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/adminFetch.js:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/adminFetch.js:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0783e4342b61d088", "name": "Commented-code block (6 lines) in client/src/lib/tapToPayReturn.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/lib/tapToPayReturn.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32106b8f63f0f81b", "name": "Legacy-named symbol `service_report_v1` in client/src/pages/ReportViewPage.jsx:330", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in client/src/pages/ReportViewPage.jsx:330"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48bdf3fb098aedd7", "name": "Commented-code block (9 lines) in client/src/pages/ReportViewPage.jsx:1012", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/ReportViewPage.jsx:1012"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6df3349ba76887d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReportViewPage.jsx:7670", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReportViewPage.jsx:7670"}, "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-ec545341e4f742fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PublicBookingPage.jsx:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PublicBookingPage.jsx:99"}, "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-919f792ff6eb0e0a", "name": "Commented-code block (7 lines) in client/src/pages/PortalPage.jsx:2826", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/PortalPage.jsx:2826"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30e2bb8b67193a76", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BookingPage.jsx:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BookingPage.jsx:12"}, "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-e98a94943e10e77d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/RatePage.jsx:221", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/RatePage.jsx:221"}, "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-f017ae7526f53fe1", "name": "Commented-code block (5 lines) in client/src/pages/AdminLoginPage.jsx:31", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/AdminLoginPage.jsx:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0163cf32b291cbe4", "name": "Commented-code block (5 lines) in client/src/pages/TrackPage.jsx:18", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/TrackPage.jsx:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d13d9a4558c4e618", "name": "Commented-code block (5 lines) in client/src/pages/QuotePage.jsx:325", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/QuotePage.jsx:325"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-082e0487b0e68674", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/QuotePage.jsx:493", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/QuotePage.jsx:493"}, "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-b56e9cb4c32bdaa6", "name": "Commented-code block (7 lines) in client/src/pages/EstimateViewPage.jsx:643", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/EstimateViewPage.jsx:643"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55fc24e639d6f9c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/EstimateViewPage.jsx:1982", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/EstimateViewPage.jsx:1982"}, "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-7dcd957c11e1c28d", "name": "Commented-code block (5 lines) in client/src/pages/NewsletterArchivePage.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/NewsletterArchivePage.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff3d6e89daf5fe36", "name": "Commented-code block (7 lines) in client/src/pages/PayPageV2.jsx:8", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/PayPageV2.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6aabcaa71b49a10", "name": "Commented-code block (5 lines) in client/src/pages/ReceiptPage.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/ReceiptPage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b0f2fb55a15e582", "name": "Commented-code block (5 lines) in client/src/pages/NewsletterLandingPage.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/NewsletterLandingPage.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ec1dc4414e8e705", "name": "Commented-code block (5 lines) in client/src/pages/TrackPreviewPage.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/TrackPreviewPage.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51667a540439afa5", "name": "Commented-code block (5 lines) in client/src/pages/tech/TechEstimatorPage.jsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/tech/TechEstimatorPage.jsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c2afedc630199d2", "name": "Commented-code block (6 lines) in client/src/pages/tech/TechHomePage.jsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/tech/TechHomePage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e226af6e62c22d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/tech/TechHomePage.jsx:729", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/tech/TechHomePage.jsx:729"}, "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-718eb72a83a72ab8", "name": "Commented-code block (5 lines) in client/src/pages/tech/TechProtocolsPage.jsx:19", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/tech/TechProtocolsPage.jsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80daf21c98ff976d", "name": "Commented-code block (17 lines) in client/src/pages/admin/EmailAutomationsPanelV2.jsx:15", "shortDescription": {"text": "Commented-code block (17 lines) in client/src/pages/admin/EmailAutomationsPanelV2.jsx:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10ae2efdf1b9c379", "name": "Legacy-named symbol `credentials_v1` in client/src/pages/admin/CredentialsPage.jsx:4", "shortDescription": {"text": "Legacy-named symbol `credentials_v1` in client/src/pages/admin/CredentialsPage.jsx:4"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fc4855a17c950ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BlogPage.jsx:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BlogPage.jsx:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb9e3a3edfa8beec", "name": "Commented-code block (8 lines) in client/src/pages/admin/EquipmentCalibrationPanel.jsx:125", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/pages/admin/EquipmentCalibrationPanel.jsx:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e06467ea8e582f05", "name": "Commented-code block (10 lines) in client/src/pages/admin/CustomersPageV2.jsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in client/src/pages/admin/CustomersPageV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff9e89c918628659", "name": "Commented-code block (5 lines) in client/src/pages/admin/DispatchBoardPage.jsx:80", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/DispatchBoardPage.jsx:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b62e8a46fef19af3", "name": "Legacy-named symbol `service_default_v1` in client/src/pages/admin/EmailTemplatesPanelV2.jsx:252", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in client/src/pages/admin/EmailTemplatesPanelV2.jsx:252"}, "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-d33fc817b397ba5c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatePage.jsx:1789", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatePage.jsx:1789"}, "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-c42282c102769d8f", "name": "Legacy-named symbol `inferred_v1` in client/src/pages/admin/ServiceLibraryPage.jsx:104", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in client/src/pages/admin/ServiceLibraryPage.jsx:104"}, "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-c7c85425b9ae1c98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingStrategyPage.jsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingStrategyPage.jsx:25"}, "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-306888e1a25166e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgePage.jsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgePage.jsx:33"}, "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-472e71f14e7c5147", "name": "Commented-code block (5 lines) in client/src/pages/admin/EstimateToolViewV2.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/EstimateToolViewV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1454cd8c3dc7e0f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:307", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:307"}, "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-46823376cc65e469", "name": "Legacy-named symbol `customer_copy` in client/src/pages/admin/LawnAssessmentPanel.jsx:173", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in client/src/pages/admin/LawnAssessmentPanel.jsx:173"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c4a59c585e8006b", "name": "Commented-code block (5 lines) in client/src/pages/admin/LawnAssessmentPanel.jsx:356", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/LawnAssessmentPanel.jsx:356"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1dcc410de6628d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LawnAssessmentPanel.jsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LawnAssessmentPanel.jsx:26"}, "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-98f83ffdc1255411", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TaxPage.jsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TaxPage.jsx:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6f8889a270e0ccb", "name": "Commented-code block (6 lines) in client/src/pages/admin/CustomerHealthTabs.jsx:24", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/admin/CustomerHealthTabs.jsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9152856c5eeaa12f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthTabs.jsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthTabs.jsx:6"}, "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-0c74767c1ad2e76b", "name": "Commented-code block (6 lines) in client/src/pages/admin/PipelineAnalytics.jsx:138", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/admin/PipelineAnalytics.jsx:138"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfc6625931118b88", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DiscountsTabs.jsx:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DiscountsTabs.jsx:24"}, "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-9e8587dfe1ddefa1", "name": "Commented-code block (5 lines) in client/src/pages/admin/AgentsHubPage.jsx:69", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/AgentsHubPage.jsx:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05f55fe41bfe42a3", "name": "Commented-code block (5 lines) in client/src/pages/admin/TimeTrackingPage.jsx:3140", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/TimeTrackingPage.jsx:3140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d87aa91418151563", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TimeTrackingPage.jsx:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TimeTrackingPage.jsx:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06b72213a8efa564", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RequestsPage.jsx:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RequestsPage.jsx:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81e09d08bfb71bbc", "name": "Commented-code block (5 lines) in client/src/pages/admin/CallRecordingsPanel.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/CallRecordingsPanel.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de288f57d0fc07ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CallRecordingsPanel.jsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CallRecordingsPanel.jsx:66"}, "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-5cd6244f1e8e3237", "name": "Commented-code block (5 lines) in client/src/pages/admin/CallLogTabV2.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/CallLogTabV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40bbac1f8e686958", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LeadsTabs.jsx:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LeadsTabs.jsx:10"}, "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-4986979e70666ac1", "name": "Commented-code block (8 lines) in client/src/pages/admin/CommunicationsPage.jsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/pages/admin/CommunicationsPage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23c35aca51eb509f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.jsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.jsx:58"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24cfc384fc62fff6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/GBPManagement.jsx:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/GBPManagement.jsx:24"}, "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-9492ae3eb621546f", "name": "Commented-code block (5 lines) in client/src/pages/admin/_DesignSystemFlagsPage.jsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/_DesignSystemFlagsPage.jsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7616b0e044c75d63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/_DesignSystemFlagsPage.jsx:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/_DesignSystemFlagsPage.jsx:24"}, "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-2e84f2914a133e9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BankingPage.jsx:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BankingPage.jsx:67"}, "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-fd6bd78b07e70664", "name": "Commented-code block (6 lines) in client/src/pages/admin/ReviewsPage.jsx:3095", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/admin/ReviewsPage.jsx:3095"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67a0f5a51f90c146", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.jsx:1854", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.jsx:1854"}, "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-a4a13a659668eaf1", "name": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsTabsV2.jsx:5", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsTabsV2.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7142b0222300d91", "name": "Commented-code block (5 lines) in client/src/pages/admin/NewsletterTabs.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/NewsletterTabs.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24dad68d555e8f1b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/NewsletterTabs.jsx:2034", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/NewsletterTabs.jsx:2034"}, "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-0ebf668ec0cf34a7", "name": "Commented-code block (11 lines) in client/src/pages/admin/AdminInvoicesPage.jsx:8", "shortDescription": {"text": "Commented-code block (11 lines) in client/src/pages/admin/AdminInvoicesPage.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f64a0b1b512c2b55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CompliancePage.jsx:269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CompliancePage.jsx:269"}, "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-476ca683407b2708", "name": "Commented-code block (6 lines) in client/src/pages/admin/AdsPage.jsx:3121", "shortDescription": {"text": "Commented-code block (6 lines) in client/src/pages/admin/AdsPage.jsx:3121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-395b3df5c467b15c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdsPage.jsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdsPage.jsx:45"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba180bc0df8d2d14", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentMaintenancePage.jsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentMaintenancePage.jsx:30"}, "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-be450312c617ce7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgeBasePage.jsx:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgeBasePage.jsx:28"}, "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-87819d155d06f2d7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentCalendar.jsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentCalendar.jsx:26"}, "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-9af8f83ec73c256e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ToolHealthPage.jsx:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ToolHealthPage.jsx:22"}, "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-21e5548d968b0029", "name": "Commented-code block (8 lines) in client/src/pages/admin/DispatchPageV2.jsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/pages/admin/DispatchPageV2.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a70835377f18905", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PPCDashboardPage.jsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PPCDashboardPage.jsx:6"}, "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-beab277b996996a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingLogicPage.jsx:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingLogicPage.jsx:64"}, "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-6ae633d68c41b7db", "name": "Legacy-named symbol `billing_copy` in client/src/pages/admin/ProjectsPage.jsx:1643", "shortDescription": {"text": "Legacy-named symbol `billing_copy` in client/src/pages/admin/ProjectsPage.jsx:1643"}, "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-37ba53ce45db8c22", "name": "Commented-code block (9 lines) in client/src/pages/admin/ReviewVelocityEngine.jsx:55", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/admin/ReviewVelocityEngine.jsx:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6345852cc8678568", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:7"}, "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-5d372ab3f26db970", "name": "Commented-code block (7 lines) in client/src/pages/admin/CustomersPage.jsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/admin/CustomersPage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6fcbaf6431bb56c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomersPage.jsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomersPage.jsx:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-12f4295feebd991c", "name": "Commented-code block (14 lines) in client/src/pages/admin/EstimatesPageV2.jsx:1", "shortDescription": {"text": "Commented-code block (14 lines) in client/src/pages/admin/EstimatesPageV2.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18b20edd0ffed9b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:158"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af1210bdc6032d9c", "name": "Commented-code block (9 lines) in client/src/pages/admin/NewsletterPage.jsx:3", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/admin/NewsletterPage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d300721038011719", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SettingsPage.jsx:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SettingsPage.jsx:40"}, "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-591d4b408b38fac7", "name": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsPageV2.jsx:5", "shortDescription": {"text": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsPageV2.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5cd7781786a776a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialMediaPage.jsx:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialMediaPage.jsx:54"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b6a4703e29d6bb1e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPageV2.jsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPageV2.jsx:33"}, "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-76e1afaa8f24c09f", "name": "Commented-code block (5 lines) in client/src/pages/admin/RevenuePage.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/RevenuePage.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3bdf17e6237817ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RevenuePage.jsx:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RevenuePage.jsx:73"}, "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-c91a2a8f5922dc68", "name": "Commented-code block (8 lines) in client/src/pages/admin/CustomerHealthPage.jsx:24", "shortDescription": {"text": "Commented-code block (8 lines) in client/src/pages/admin/CustomerHealthPage.jsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73167f8b3876197f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthPage.jsx:6", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthPage.jsx:6"}, "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-da00949a3c51003a", "name": "Commented-code block (14 lines) in client/src/pages/admin/SchedulePage.jsx:3", "shortDescription": {"text": "Commented-code block (14 lines) in client/src/pages/admin/SchedulePage.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8b00da56c64d32d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SchedulePage.jsx:366", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SchedulePage.jsx:366"}, "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-d04230230c640d25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EmailPage.jsx:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EmailPage.jsx:13"}, "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-2b0db60bf47fedc1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TurfHeightReviewPage.jsx:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TurfHeightReviewPage.jsx:7"}, "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-e4a85b1464e0dc80", "name": "Commented-code block (5 lines) in client/src/pages/admin/AdminDispatchPage.jsx:81", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/pages/admin/AdminDispatchPage.jsx:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c9a2d8282c4a07b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentPage.jsx:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentPage.jsx:30"}, "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-4f65b1f61a1e4a3a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPage.jsx:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPage.jsx:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b34a9a23c17361ef", "name": "Commented-code block (7 lines) in client/src/pages/admin/WinLossSlicesCard.jsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in client/src/pages/admin/WinLossSlicesCard.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b72723d5a235ce05", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WinLossSlicesCard.jsx:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WinLossSlicesCard.jsx:16"}, "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-880eaca112b5ef9a", "name": "Commented-code block (11 lines) in client/src/hooks/useDispatchBoard.js:56", "shortDescription": {"text": "Commented-code block (11 lines) in client/src/hooks/useDispatchBoard.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dba4530d980edfac", "name": "Commented-code block (5 lines) in client/src/hooks/useFeatureFlag.js:38", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/hooks/useFeatureFlag.js:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0fce31d517b84f7", "name": "Commented-code block (5 lines) in client/src/hooks/useDispatchAlerts.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in client/src/hooks/useDispatchAlerts.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87a5f79919f3d33e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDispatchAlerts.js:156", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDispatchAlerts.js:156"}, "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-0bd53d47cfb5bb47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIntelligenceBar.js:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIntelligenceBar.js:23"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-718b70e7516de431", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-content-agent.js:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-content-agent.js:24"}, "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-c4ba9c4a87cd2fb7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-retention-agent.js:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-retention-agent.js:8"}, "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-4b3ca85f44c82e5a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-managed-agent.js:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-managed-agent.js:24"}, "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-7ae3d95ef4fea5c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-bi-agent.js:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-bi-agent.js:8"}, "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-0215cfa85f9fd3cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-backlink-strategy-agent.js:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-backlink-strategy-agent.js:26"}, "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-b6de7d5a4357715c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-lead-response-agent.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-lead-response-agent.js:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ee7b96c3d52e187", "name": "Commented-code block (6 lines) in scripts/seed-local-pricing.js:110", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/seed-local-pricing.js:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ebf38a115e4859b7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-customer-contact-fields.js:144", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-customer-contact-fields.js:144"}, "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-2b120c3ba16aa715", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/export-studio-flow.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/export-studio-flow.js:66"}, "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-23893d63282d0a75", "name": "Commented-code block (7 lines) in scripts/twilio/verify-studio-flow-contract.js:137", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/twilio/verify-studio-flow-contract.js:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96f393d865d023eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/verify-studio-flow-contract.js:250", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/verify-studio-flow-contract.js:250"}, "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-1f9bb39d67158271", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/audit-inbound-routing.js:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/audit-inbound-routing.js:100"}, "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-827cbc1c12d512d2", "name": "Commented-code block (6 lines) in packages/blog-schema/schema.ts:192", "shortDescription": {"text": "Commented-code block (6 lines) in packages/blog-schema/schema.ts:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb8ab00357439fbb", "name": "Commented-code block (5 lines) in server/index.js:147", "shortDescription": {"text": "Commented-code block (5 lines) in server/index.js:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb06338e3a36c635", "name": "Commented-code block (5 lines) in server/models/migrations/20260514000009_seed_general_pest_service_type_aliases.js:35", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260514000009_seed_general_pest_service_type_aliases.js:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ec1809bd6be071c", "name": "Legacy-named symbol `protocol_canonical_price_seed_v1` in server/models/migrations/20260528000007_protocol_canonical_pri", "shortDescription": {"text": "Legacy-named symbol `protocol_canonical_price_seed_v1` in server/models/migrations/20260528000007_protocol_canonical_price_mappings.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9ffe583001ea2c7", "name": "Legacy-named symbol `newsletter_default_v1` in server/models/migrations/20260518000001_email_template_library.js:647", "shortDescription": {"text": "Legacy-named symbol `newsletter_default_v1` in server/models/migrations/20260518000001_email_template_library.js:647"}, "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-d3db75af75da6005", "name": "Legacy-named symbol `idx_service_records_report_v1` in server/models/migrations/20260515000001_service_report_v1_foundat", "shortDescription": {"text": "Legacy-named symbol `idx_service_records_report_v1` in server/models/migrations/20260515000001_service_report_v1_foundation.js:66"}, "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-9e513781b4057873", "name": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000005_drop_square_columns.js:29", "shortDescription": {"text": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000005_drop_square_columns.js:29"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3df2fb65d87a5657", "name": "Legacy-named symbol `ff_customer_login_v2` in server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.js:8", "shortDescription": {"text": "Legacy-named symbol `ff_customer_login_v2` in server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.js:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c0e9558bd66a413", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000009_deepen_onboarding_welcome_prep_email", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000009_deepen_onboarding_welcome_prep_email_templates.js:375"}, "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-56327c7ed317a36d", "name": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260514000002_tighten_sms_template_copy.js:884", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260514000002_tighten_sms_template_copy.js:884"}, "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-7493648a5cb46c24", "name": "Legacy-named symbol `hasLegacy` in server/models/migrations/20260517000001_backfill_legacy_equipment_maintenance.js:9", "shortDescription": {"text": "Legacy-named symbol `hasLegacy` in server/models/migrations/20260517000001_backfill_legacy_equipment_maintenance.js:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb0dc401929223f9", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000011_deepen_service_report_email_template", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000011_deepen_service_report_email_templates.js:153"}, "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-02c4d34665090730", "name": "Commented-code block (7 lines) in server/models/migrations/20260612000001_estimate_actuals.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260612000001_estimate_actuals.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1be8dda0a02ff406", "name": "Commented-code block (5 lines) in server/models/migrations/20260417000006_wipe_square_stripe_ids.js:15", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260417000006_wipe_square_stripe_ids.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42bcf6fe2b219f7d", "name": "Legacy-named symbol `report_copy` in server/models/migrations/20260529000003_lawn_protocol_operating_layer.js:87", "shortDescription": {"text": "Legacy-named symbol `report_copy` in server/models/migrations/20260529000003_lawn_protocol_operating_layer.js:87"}, "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-7c5dfc1a70941aa9", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/models/migrations/20260518000006_sms_template_h", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/models/migrations/20260518000006_sms_template_hardcoded_cleanup.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e74130059eba5abb", "name": "Commented-code block (5 lines) in server/models/migrations/20260422000005_business_credentials.js:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260422000005_business_credentials.js:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d46bb9546ffa47b4", "name": "Commented-code block (8 lines) in server/models/migrations/20260430000003_lawn_assessments_fawn_snapshot.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000003_lawn_assessments_fawn_snapshot.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c76c225f66cfc30f", "name": "Commented-code block (10 lines) in server/models/migrations/20260611000001_customer_health_scores_reconcile.js:124", "shortDescription": {"text": "Commented-code block (10 lines) in server/models/migrations/20260611000001_customer_health_scores_reconcile.js:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c80f01ab1358fab6", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000001_seed_late_payment_email_templates.js", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000001_seed_late_payment_email_templates.js:146"}, "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-234dffbc3190203e", "name": "Commented-code block (8 lines) in server/models/migrations/20260528000031_fix_kb_blackout_charlotte_northport.js:56", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260528000031_fix_kb_blackout_charlotte_northport.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67b937eb070d2dbf", "name": "Legacy-named symbol `house_voice_v1` in server/models/migrations/20260612000020_message_drafts_shadow.js:14", "shortDescription": {"text": "Legacy-named symbol `house_voice_v1` in server/models/migrations/20260612000020_message_drafts_shadow.js:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2532442f25c6e553", "name": "Commented-code block (7 lines) in server/models/migrations/20260430000009_products_catalog_label_fields.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000009_products_catalog_label_fields.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ec22556cbf6bbd3", "name": "Commented-code block (5 lines) in server/models/migrations/20260610000001_payments_superseded_by.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260610000001_payments_superseded_by.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b3d3071502a5de7", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000008_seed_invoice_followup_email_template", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000008_seed_invoice_followup_email_templates.js:128"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e060f43760e2c7a9", "name": "Commented-code block (5 lines) in server/models/migrations/20260422000009_scheduled_services_tracking.js:28", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260422000009_scheduled_services_tracking.js:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c71c5d1f5b591bc", "name": "Commented-code block (9 lines) in server/models/migrations/20260615000005_scheduled_services_no_show_status.js:60", "shortDescription": {"text": "Commented-code block (9 lines) in server/models/migrations/20260615000005_scheduled_services_no_show_status.js:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49421db275bea02b", "name": "Legacy-named symbol `inferred_v1` in server/models/migrations/20260529000001_service_closeout_requirements.js:41", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in server/models/migrations/20260529000001_service_closeout_requirements.js:41"}, "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-110747bbc0a60b38", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260531000010_project_report_with_invoice_attachme", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260531000010_project_report_with_invoice_attachment_copy.js:113"}, "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-d65468d1b1197434", "name": "Commented-code block (5 lines) in server/models/migrations/20260602000002_addon_duration.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260602000002_addon_duration.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d334d1d8b0644252", "name": "Commented-code block (8 lines) in server/models/migrations/20260507000002_normalize_service_names_and_inspection_catalog", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260507000002_normalize_service_names_and_inspection_catalog.js:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7964488f29505ca7", "name": "Commented-code block (7 lines) in server/models/migrations/20260430000004_lawn_assessments_service_id.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000004_lawn_assessments_service_id.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eaf30b72eef20c89", "name": "Commented-code block (7 lines) in server/models/migrations/20260426000001_dashboard_alert_state.js:8", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260426000001_dashboard_alert_state.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5549b7100ced8063", "name": "Commented-code block (5 lines) in server/models/migrations/20260528000021_onetime_pest_setup_premium_model.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260528000021_onetime_pest_setup_premium_model.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6fa901f7bcb8c2cb", "name": "Commented-code block (6 lines) in server/models/migrations/20260514000004_completion_attempts_resolved_snapshot.js:44", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260514000004_completion_attempts_resolved_snapshot.js:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4e7a46c17cb06d7", "name": "Commented-code block (5 lines) in server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c920e55fd8c27875", "name": "Commented-code block (6 lines) in server/models/migrations/20260429000002_track_token_defaults_and_tz_fix.js:39", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260429000002_track_token_defaults_and_tz_fix.js:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-508b692ed55d4b1b", "name": "Commented-code block (7 lines) in server/models/migrations/20260611000008_protocol_product_alias_gaps.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260611000008_protocol_product_alias_gaps.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1495ee68402bdfcd", "name": "Commented-code block (5 lines) in server/models/migrations/20260417000008_regenerate_bermuda_zoysia_low_brackets.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260417000008_regenerate_bermuda_zoysia_low_brackets.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abfb7d3c57d7738b", "name": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260516000001_service_report_deliveries.js:17", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260516000001_service_report_deliveries.js:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03f47abfcee63bdf", "name": "Legacy-named symbol `20260414000018_lawn_photos_and_knowledge_bridge_v2` in server/models/migrations/20260430000006_lawn", "shortDescription": {"text": "Legacy-named symbol `20260414000018_lawn_photos_and_knowledge_bridge_v2` in server/models/migrations/20260430000006_lawn_assessment_photos_v2_columns.js:2"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f28ac2bad738d670", "name": "Commented-code block (8 lines) in server/models/migrations/20260430000006_lawn_assessment_photos_v2_columns.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000006_lawn_assessment_photos_v2_columns.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5eb730fc8bb383fe", "name": "Legacy-named symbol `lawn_snapshot_v1` in server/models/migrations/20260527000007_property_health_snapshots_and_recommen", "shortDescription": {"text": "Legacy-named symbol `lawn_snapshot_v1` in server/models/migrations/20260527000007_property_health_snapshots_and_recommendations.js:53"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb61d1b14f183156", "name": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260611000013_service_report_v1_progress_sms.js:5", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260611000013_service_report_v1_progress_sms.js:5"}, "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-1623828787e65905", "name": "Commented-code block (5 lines) in server/models/migrations/20260425000003_seed_lead_sources.js:118", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260425000003_seed_lead_sources.js:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d49c825a2cfd240", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260529000002_project_report_with_invoice_email_te", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260529000002_project_report_with_invoice_email_template.js:105"}, "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-a5b92318c3018362", "name": "Commented-code block (6 lines) in server/models/migrations/20260514000007_seed_exterior_general_pest_perimeter.js:141", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260514000007_seed_exterior_general_pest_perimeter.js:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-350325099180c898", "name": "Commented-code block (9 lines) in server/models/migrations/20260612000002_estimate_deposits.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in server/models/migrations/20260612000002_estimate_deposits.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c855c70d94bdb707", "name": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000002_repair_hardcoded_sms_template_s", "shortDescription": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000002_repair_hardcoded_sms_template_seeds.js:38"}, "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-4112131c0c108f06", "name": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000006_remove_legacy_integrations.js:31", "shortDescription": {"text": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000006_remove_legacy_integrations.js:31"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41cfa92fd1674962", "name": "Commented-code block (5 lines) in server/models/migrations/20260430000007_customer_turf_profiles.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000007_customer_turf_profiles.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4108e81fc3b79753", "name": "Commented-code block (6 lines) in server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:36", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e09873f92ffabe89", "name": "Legacy-named symbol `flea_2026_v1` in server/models/migrations/20260526000016_flea_offer_pricing_config.js:14", "shortDescription": {"text": "Legacy-named symbol `flea_2026_v1` in server/models/migrations/20260526000016_flea_offer_pricing_config.js:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94a3fff9866c7fdf", "name": "Commented-code block (6 lines) in server/models/migrations/20260521000007_autonomous_content_phase_1.js:79", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260521000007_autonomous_content_phase_1.js:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ca9080d2983fc7d", "name": "Commented-code block (8 lines) in server/models/migrations/20260430000011_municipality_ordinances.js:8", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000011_municipality_ordinances.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69193d850746db4f", "name": "Commented-code block (7 lines) in server/models/migrations/20260430000005_tech_calibration_bias_direction.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000005_tech_calibration_bias_direction.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5f17eb3e36be0ea", "name": "Commented-code block (5 lines) in server/models/migrations/20260528000031_onetime_pest_quarterly_multiple.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260528000031_onetime_pest_quarterly_multiple.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0e2502bf41f2bef", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260522000002_seed_ach_processing_acknowledgment_t", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260522000002_seed_ach_processing_acknowledgment_templates.js:110"}, "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-7223b5e75f9f1dce", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000002_seed_prep_wildlife_enrich_bed_bug.js", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000002_seed_prep_wildlife_enrich_bed_bug.js:115"}, "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-165b40569429dc48", "name": "Commented-code block (8 lines) in server/models/migrations/20260522000010_data_hygiene.js:97", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260522000010_data_hygiene.js:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7fc27843b10ae73", "name": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260528000008_lawn_pricing_v2_dense_55_floor_config.j", "shortDescription": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260528000008_lawn_pricing_v2_dense_55_floor_config.js:34"}, "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-5ceecd37bdc09038", "name": "Commented-code block (6 lines) in server/models/migrations/20260414000026_pricing_config_jsonb.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260414000026_pricing_config_jsonb.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19c4f690389f27cb", "name": "Commented-code block (5 lines) in server/models/migrations/20260610000002_payments_status_disputed_canceled.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260610000002_payments_status_disputed_canceled.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4e065162ed72500", "name": "Commented-code block (5 lines) in server/models/migrations/20260430000002_stripe_payment_notification_attempt.js:40", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000002_stripe_payment_notification_attempt.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15bdbf317fab265f", "name": "Commented-code block (5 lines) in server/models/migrations/20260430000010_seed_core_waveguard_products.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000010_seed_core_waveguard_products.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19bdbc093c7f236c", "name": "Commented-code block (5 lines) in server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:32", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1928069ba8b4a651", "name": "Commented-code block (5 lines) in server/models/migrations/20260514000003_protocol_templates.js:69", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260514000003_protocol_templates.js:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5c733923f3c525a", "name": "Commented-code block (8 lines) in server/models/migrations/20260514000005_service_records_attestation_audit.js:72", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260514000005_service_records_attestation_audit.js:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-811c304ac5bb85b6", "name": "Commented-code block (11 lines) in server/models/migrations/20260611000012_specialty_phase1_cutover.js:44", "shortDescription": {"text": "Commented-code block (11 lines) in server/models/migrations/20260611000012_specialty_phase1_cutover.js:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-350566e0bcabf034", "name": "Commented-code block (7 lines) in server/models/migrations/20260419000006_terminal_client_errors.js:55", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260419000006_terminal_client_errors.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9beda059a5ba7f93", "name": "Commented-code block (5 lines) in server/models/migrations/20260430000008_equipment_systems_and_calibrations.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000008_equipment_systems_and_calibrations.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1336ecdf0ab5805", "name": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000006_delete_service_reminder_legacy_", "shortDescription": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000006_delete_service_reminder_legacy_sms_template.js:2"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbd6257ce1fb4dbf", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260520000001_seed_estimate_followup_final_templat", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260520000001_seed_estimate_followup_final_template.js:50"}, "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-91e5c1d7eb00e282", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000012_deepen_account_portal_email_template", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000012_deepen_account_portal_email_templates.js:393"}, "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-a7c6a846e49e4bec", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000010_deepen_billing_payment_email_templat", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000010_deepen_billing_payment_email_templates.js:395"}, "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-683240ecb2788e55", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000008_deepen_quote_estimate_email_template", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000008_deepen_quote_estimate_email_templates.js:239"}, "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-8cd7d8a3a76754bd", "name": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260530000011_lawn_pricing_45_margin_recalibration.js", "shortDescription": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260530000011_lawn_pricing_45_margin_recalibration.js:111"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4d5ed76ca703b93", "name": "Commented-code block (5 lines) in server/models/migrations/20260418000006_unified_comms_schema.js:117", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260418000006_unified_comms_schema.js:117"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-865d7ee4d072bf66", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000003_seed_account_membership_email_templa", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000003_seed_account_membership_email_templates.js:375"}, "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-3a411c0da04e48ff", "name": "Commented-code block (6 lines) in server/models/migrations/20260528000030_rename_lwr_location_id_to_bradenton.js:44", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260528000030_rename_lwr_location_id_to_bradenton.js:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cb8c1ee66c86633", "name": "Commented-code block (5 lines) in server/models/migrations/20260612000003_estimate_deposit_flat_config.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000003_estimate_deposit_flat_config.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5315c139dd99b11b", "name": "Commented-code block (7 lines) in server/models/migrations/20260501000001_planner_data_prep.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in server/models/migrations/20260501000001_planner_data_prep.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3b9ada57b29da95", "name": "Commented-code block (5 lines) in server/models/migrations/20260415000008_remove_invoice_due_today.js:13", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260415000008_remove_invoice_due_today.js:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6dbf002133942d4a", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000002_seed_payment_lifecycle_email_templat", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000002_seed_payment_lifecycle_email_templates.js:266"}, "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-0b00cd4c860f18b6", "name": "Commented-code block (5 lines) in server/models/migrations/20260612000031_combined_service_cutover.js:279", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000031_combined_service_cutover.js:279"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdd34549dbb015b3", "name": "Commented-code block (11 lines) in server/models/migrations/20260414000017_pest_service_costs_and_modifiers.js:5", "shortDescription": {"text": "Commented-code block (11 lines) in server/models/migrations/20260414000017_pest_service_costs_and_modifiers.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef153ebf6f335366", "name": "Commented-code block (5 lines) in server/models/migrations/20260419000005_audit_log.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260419000005_audit_log.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47093617a2a74999", "name": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000004_seed_project_prep_portal_email_templ", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000004_seed_project_prep_portal_email_templates.js:227"}, "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-b549182a957c574b", "name": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260513000002_label_hardcoded_sms_templates.j", "shortDescription": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260513000002_label_hardcoded_sms_templates.js:50"}, "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-2296e841f2d242b4", "name": "Commented-code block (8 lines) in server/models/migrations/20260521000008_autonomous_content_phase_2_serp_snapshots.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in server/models/migrations/20260521000008_autonomous_content_phase_2_serp_snapshots.js:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03e9fa6ce7282e93", "name": "Commented-code block (5 lines) in server/models/migrations/20260426000010_seed_pest_service_costs.js:24", "shortDescription": {"text": "Commented-code block (5 lines) in server/models/migrations/20260426000010_seed_pest_service_costs.js:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac4dae27ed5969d3", "name": "Commented-code block (6 lines) in server/models/migrations/20260428000012_invoice_payment_reference.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/models/migrations/20260428000012_invoice_payment_reference.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e47ad7e489f74978", "name": "Commented-code block (6 lines) in server/config/feature-gates.js:49", "shortDescription": {"text": "Commented-code block (6 lines) in server/config/feature-gates.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6262dc4235d70c5b", "name": "Commented-code block (9 lines) in server/config/locations.js:2", "shortDescription": {"text": "Commented-code block (9 lines) in server/config/locations.js:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80a7b6e77313a342", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/estimate-public-sms-template.test.js:88", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/estimate-public-sms-template.test.js:88"}, "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-98bc87cfe6dc541b", "name": "Legacy-named symbol `service_default_v1` in server/tests/admin-email-templates-routes.test.js:223", "shortDescription": {"text": "Legacy-named symbol `service_default_v1` in server/tests/admin-email-templates-routes.test.js:223"}, "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-b3bd07cb05271912", "name": "Legacy-named symbol `companion_findings_banned_copy` in server/tests/combined-completions.test.js:399", "shortDescription": {"text": "Legacy-named symbol `companion_findings_banned_copy` in server/tests/combined-completions.test.js:399"}, "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-ee55db6ebb115dd6", "name": "Commented-code block (5 lines) in server/tests/admin-communications-sms.test.js:37", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/admin-communications-sms.test.js:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf965ccfa49ed8ff", "name": "Legacy-named symbol `service_report_v1` in server/tests/service-report-pdf-cache-config.test.js:48", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/service-report-pdf-cache-config.test.js:48"}, "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-7c8c4326eac0082d", "name": "Commented-code block (5 lines) in server/tests/link-prospect-indexing.test.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/link-prospect-indexing.test.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ec421c0cb108146", "name": "Commented-code block (6 lines) in server/tests/blog-idea-gate.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/blog-idea-gate.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19eacfb4d78ea844", "name": "Legacy-named symbol `customer_copy` in server/tests/service-report-v1.test.js:1891", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/tests/service-report-v1.test.js:1891"}, "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-a37499e0b7e33f05", "name": "Commented-code block (6 lines) in server/tests/content-quality-gate.test.js:289", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/content-quality-gate.test.js:289"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d0dd7e6a7a801d3", "name": "Legacy-named symbol `unknownLegacy` in server/tests/pricing-engine-termite-measurements.test.js:288", "shortDescription": {"text": "Legacy-named symbol `unknownLegacy` in server/tests/pricing-engine-termite-measurements.test.js:288"}, "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-f29ad4a11da4dddb", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-new-lead-sms-template-migration.te", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-new-lead-sms-template-migration.test.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23d7b6f249eaa75a", "name": "Commented-code block (5 lines) in server/tests/autonomous-runner-drought-sms.test.js:17", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/autonomous-runner-drought-sms.test.js:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30914e8c02d580fa", "name": "Legacy-named symbol `service_report_v1` in server/tests/project-completion.test.js:445", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/project-completion.test.js:445"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25abc277b67cd206", "name": "Legacy-named symbol `billing_copy` in server/tests/wdo-delivery-routing.test.js:8", "shortDescription": {"text": "Legacy-named symbol `billing_copy` in server/tests/wdo-delivery-routing.test.js:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31c2a4d491efabb3", "name": "Commented-code block (5 lines) in server/tests/internal-link-pr-executor.test.js:263", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/internal-link-pr-executor.test.js:263"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5985594b6dfbaa95", "name": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-pest-pressure-rating.test.js:144", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-pest-pressure-rating.test.js:144"}, "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-d3550541f9fc9c92", "name": "Commented-code block (5 lines) in server/tests/content-guardrails.test.js:201", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/content-guardrails.test.js:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7c3955088f76ef3b", "name": "Legacy-named symbol `inferred_v1` in server/tests/service-closeout-requirements.test.js:54", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in server/tests/service-closeout-requirements.test.js:54"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-012813c991210044", "name": "Commented-code block (5 lines) in server/tests/pest-pressure-trend.test.js:51", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/pest-pressure-trend.test.js:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-560fe5dfafd6a75b", "name": "Legacy-named symbol `service_report_v1` in server/tests/messaging-twilio-provider.test.js:48", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/messaging-twilio-provider.test.js:48"}, "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-60ca7a8a2dbabfb1", "name": "Commented-code block (5 lines) in server/tests/protected-pages.test.js:63", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/protected-pages.test.js:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9016c1feac2f08e", "name": "Commented-code block (8 lines) in server/tests/invoice-preview-parity.test.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/invoice-preview-parity.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01c5790a3a702904", "name": "Legacy-named symbol `customer_copy` in server/tests/lawn-assessment-route-contracts.test.js:108", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-assessment-route-contracts.test.js:108"}, "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-0160a873673c8bb2", "name": "Legacy-named symbol `shadow_judge_v1` in server/tests/sms-shadow-judge.test.js:128", "shortDescription": {"text": "Legacy-named symbol `shadow_judge_v1` in server/tests/sms-shadow-judge.test.js:128"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b2a42006c5a2434", "name": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/tests/call-extraction-eval-fixtures.test.js:13", "shortDescription": {"text": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/tests/call-extraction-eval-fixtures.test.js:13"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e85ec7f45f6b0edd", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-lead-service-pest-sms-template-mig", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-lead-service-pest-sms-template-migration.test.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-465440cb53463580", "name": "Legacy-named symbol `customer_copy` in server/tests/lawn-recommendation-engine.test.js:51", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-recommendation-engine.test.js:51"}, "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-9691fefe3ba46cb7", "name": "Legacy-named symbol `banned_copy` in server/tests/photo-analysis.test.js:71", "shortDescription": {"text": "Legacy-named symbol `banned_copy` in server/tests/photo-analysis.test.js:71"}, "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-60bcb11d1909e3f5", "name": "Legacy-named symbol `customer_copy` in server/tests/lawn-snapshot.test.js:22", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-snapshot.test.js:22"}, "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-fa4753aff6b5ca0d", "name": "Commented-code block (6 lines) in server/tests/invoice-scheduled-review-preserve.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/invoice-scheduled-review-preserve.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ae8fc4f4161c302", "name": "Commented-code block (6 lines) in server/tests/seo-completion-gate.test.js:193", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/seo-completion-gate.test.js:193"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-347b68b81b80c291", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-dead-legacy-sms-templates-migratio", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-dead-legacy-sms-templates-migration.test.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-276c6cfb2a347bee", "name": "Legacy-named symbol `rendered_placeholder_copy` in server/tests/email-template-library.test.js:206", "shortDescription": {"text": "Legacy-named symbol `rendered_placeholder_copy` in server/tests/email-template-library.test.js:206"}, "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-c80ca7ce041f684e", "name": "Commented-code block (5 lines) in server/tests/email-template-library.test.js:711", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/email-template-library.test.js:711"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc5f01fd1cb0858e", "name": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-suppressed-data.test.js:93", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-suppressed-data.test.js:93"}, "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-15391f252d9cc31e", "name": "Commented-code block (6 lines) in server/tests/reports-public-suppressed-data.test.js:173", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/reports-public-suppressed-data.test.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7031aedcccfbc08", "name": "Commented-code block (5 lines) in server/tests/waveguard-existing-services.test.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/waveguard-existing-services.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-682f09c654161e06", "name": "Commented-code block (5 lines) in server/tests/lawn-observation-single-voice.test.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/lawn-observation-single-voice.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-828111c426f4283c", "name": "Commented-code block (5 lines) in server/tests/token-health-meta.test.js:113", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/token-health-meta.test.js:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2502c8ede9a426e0", "name": "Commented-code block (10 lines) in server/tests/completion-attempts.test.js:387", "shortDescription": {"text": "Commented-code block (10 lines) in server/tests/completion-attempts.test.js:387"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e533831eb986f18", "name": "Commented-code block (6 lines) in server/tests/equipment-systems-and-calibrations.test.js:142", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/equipment-systems-and-calibrations.test.js:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4ad7501d2dec4da", "name": "Legacy-named symbol `gemini_v2` in server/tests/call-field-candidates.test.js:90", "shortDescription": {"text": "Legacy-named symbol `gemini_v2` in server/tests/call-field-candidates.test.js:90"}, "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-ffd81e873eead877", "name": "Commented-code block (5 lines) in server/tests/pest-pressure-store.test.js:41", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/pest-pressure-store.test.js:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f535fa938d34e150", "name": "Legacy-named symbol `city_stale_old` in server/tests/facts-bank.test.js:201", "shortDescription": {"text": "Legacy-named symbol `city_stale_old` in server/tests/facts-bank.test.js:201"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7067dfe4d455e0ef", "name": "Commented-code block (5 lines) in server/tests/intelligence-bar-write-gate-contract.test.js:241", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/intelligence-bar-write-gate-contract.test.js:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34a2f2ffbecfe14e", "name": "Commented-code block (5 lines) in server/tests/stripe-payments.test.js:240", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/stripe-payments.test.js:240"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a6917824036bf807", "name": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-events.test.js:78", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-events.test.js:78"}, "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-811b18646bfd01c5", "name": "Commented-code block (5 lines) in server/tests/admin-newsletter-patch-event-ids.test.js:97", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/admin-newsletter-patch-event-ids.test.js:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9daec9211fb9d63", "name": "Commented-code block (8 lines) in server/tests/completion-attempts-snapshot.test.js:51", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/completion-attempts-snapshot.test.js:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0aeb5def08a7285b", "name": "Legacy-named symbol `complete_service_one_tap_v1` in server/tests/completion-defaults-resolver.test.js:108", "shortDescription": {"text": "Legacy-named symbol `complete_service_one_tap_v1` in server/tests/completion-defaults-resolver.test.js:108"}, "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-23a7209317eab589", "name": "Commented-code block (7 lines) in server/tests/completion-defaults-resolver.test.js:9", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/completion-defaults-resolver.test.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0bfd8de7cd86272", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-pest-prep-sms-templates-migration.", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-pest-prep-sms-templates-migration.test.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf412731d9723df9", "name": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/tests/pricing-engine-pest-hardening.test.js", "shortDescription": {"text": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/tests/pricing-engine-pest-hardening.test.js:125"}, "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-6b73a98ed8763ce1", "name": "Commented-code block (6 lines) in server/tests/autonomous-runner.test.js:703", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/autonomous-runner.test.js:703"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a89ab05187752f41", "name": "Commented-code block (6 lines) in server/tests/content-brief-builder.test.js:172", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/content-brief-builder.test.js:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f82303ea5690ebed", "name": "Commented-code block (7 lines) in server/tests/internal-link-review-queue.test.js:54", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/internal-link-review-queue.test.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db0d7acae2c59335", "name": "Legacy-named symbol `service_report_v1` in server/tests/service-report-delivery-progress.test.js:17", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/tests/service-report-delivery-progress.test.js:17"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37c3da4d18e9a817", "name": "Commented-code block (5 lines) in server/tests/appointment-reminders-dedup.test.js:266", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/appointment-reminders-dedup.test.js:266"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-441ff148d1f44656", "name": "Commented-code block (5 lines) in server/tests/pricing-engine.regression.test.js:40", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/pricing-engine.regression.test.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-822cb0b8b87faf1c", "name": "Commented-code block (8 lines) in server/tests/estimate-show-your-work.test.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/estimate-show-your-work.test.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9c5c59c73b36356", "name": "Commented-code block (5 lines) in server/tests/newsletter.test.js:216", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/newsletter.test.js:216"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9930ad9d2b2b4da3", "name": "Commented-code block (6 lines) in server/tests/admin-pest-pressure.test.js:463", "shortDescription": {"text": "Commented-code block (6 lines) in server/tests/admin-pest-pressure.test.js:463"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f06c94cf6dff00dd", "name": "Commented-code block (7 lines) in server/tests/estimate-public-existing-customer.test.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in server/tests/estimate-public-existing-customer.test.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-09554c5384b6e611", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-onetime-quote-followup-sms-templat", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-onetime-quote-followup-sms-template-migration.test.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9104df2a30e6eb79", "name": "Commented-code block (5 lines) in server/tests/estimate-membership-context.test.js:104", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/estimate-membership-context.test.js:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c95d37a9636e0c7", "name": "Commented-code block (5 lines) in server/tests/estimate-deposits.test.js:750", "shortDescription": {"text": "Commented-code block (5 lines) in server/tests/estimate-deposits.test.js:750"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f75545fc077fe7a", "name": "Legacy-named symbol `appointmentCandidateChangedVsLegacy` in server/tests/replay-call-extraction-variance.test.js:27", "shortDescription": {"text": "Legacy-named symbol `appointmentCandidateChangedVsLegacy` in server/tests/replay-call-extraction-variance.test.js:27"}, "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-9f4936892a3b6fb0", "name": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/tests/call-extraction-v2.test.js:3", "shortDescription": {"text": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/tests/call-extraction-v2.test.js:3"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e892fd702cc892f8", "name": "Commented-code block (8 lines) in server/tests/blog-astro-pipeline.test.js:1794", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/blog-astro-pipeline.test.js:1794"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9c981a9f59317b0", "name": "Commented-code block (8 lines) in server/tests/autonomous-pr-poller.test.js:86", "shortDescription": {"text": "Commented-code block (8 lines) in server/tests/autonomous-pr-poller.test.js:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-944b9325262e651c", "name": "Commented-code block (8 lines) in server/middleware/twilio-signature.js:187", "shortDescription": {"text": "Commented-code block (8 lines) in server/middleware/twilio-signature.js:187"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1076fa41aa5cf367", "name": "Commented-code block (5 lines) in server/scripts/v2-promotion-readiness.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in server/scripts/v2-promotion-readiness.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-251b76f57e67ca75", "name": "Legacy-named symbol `service_report_v1` in server/scripts/backfill-broken-pdfs.js:36", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/scripts/backfill-broken-pdfs.js:36"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da4789d62a68523c", "name": "Commented-code block (6 lines) in server/scripts/autonomous-engine-calibration.js:270", "shortDescription": {"text": "Commented-code block (6 lines) in server/scripts/autonomous-engine-calibration.js:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0baedba557dcb6c", "name": "Legacy-named symbol `nLegacy` in server/scripts/audit-waveguard-protocol-material-costs.js:222", "shortDescription": {"text": "Legacy-named symbol `nLegacy` in server/scripts/audit-waveguard-protocol-material-costs.js:222"}, "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-778ab7d76d92cae2", "name": "Commented-code block (5 lines) in server/scripts/migrate-beehiiv-subscribers.js:259", "shortDescription": {"text": "Commented-code block (5 lines) in server/scripts/migrate-beehiiv-subscribers.js:259"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d91deb1c031233d9", "name": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/scripts/replay-call-extraction-variance.js:67", "shortDescription": {"text": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/scripts/replay-call-extraction-variance.js:67"}, "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-d1b047fe9d75d7af", "name": "Legacy-named symbol `tooOld` in server/scripts/backfill-invoice-followups.js:66", "shortDescription": {"text": "Legacy-named symbol `tooOld` in server/scripts/backfill-invoice-followups.js:66"}, "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-c8d1761ec1feb181", "name": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/utils/extraction-compat.js:41", "shortDescription": {"text": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/utils/extraction-compat.js:41"}, "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-fbdd3de4f21572c0", "name": "Commented-code block (5 lines) in server/utils/cron-lock.js:62", "shortDescription": {"text": "Commented-code block (5 lines) in server/utils/cron-lock.js:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-27952bbb2f03abf9", "name": "Commented-code block (5 lines) in server/utils/route-cache.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in server/utils/route-cache.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b18127f4cb69790", "name": "Commented-code block (6 lines) in server/routes/admin-reviews.js:121", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-reviews.js:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88fa8a6407fed049", "name": "Commented-code block (5 lines) in server/routes/integrations-vendor-price-worker.js:97", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/integrations-vendor-price-worker.js:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8127608f8c398799", "name": "Legacy-named symbol `credentials_v1` in server/routes/admin-credentials.js:9", "shortDescription": {"text": "Legacy-named symbol `credentials_v1` in server/routes/admin-credentials.js:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2438e614802b14c", "name": "Legacy-named symbol `photo_caption_banned_copy` in server/routes/admin-dispatch.js:1827", "shortDescription": {"text": "Legacy-named symbol `photo_caption_banned_copy` in server/routes/admin-dispatch.js:1827"}, "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-c54711abea70fba5", "name": "Commented-code block (7 lines) in server/routes/admin-dispatch.js:84", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/admin-dispatch.js:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4a910c10277d5e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-dispatch.js:1131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-dispatch.js:1131"}, "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-388d3120effd3999", "name": "Legacy-named symbol `report_copy` in server/routes/admin-projects.js:2505", "shortDescription": {"text": "Legacy-named symbol `report_copy` in server/routes/admin-projects.js:2505"}, "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-9e1e754585ef3214", "name": "Commented-code block (6 lines) in server/routes/admin-projects.js:477", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-projects.js:477"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea11bb5a0f34e5ff", "name": "Commented-code block (5 lines) in server/routes/admin-timetracking.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-timetracking.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51809dc4e814de74", "name": "Legacy-named symbol `service_report_v1` in server/routes/reports-public.js:210", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/routes/reports-public.js:210"}, "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-f95145b9ec1a94a0", "name": "Commented-code block (7 lines) in server/routes/reports-public.js:16", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/reports-public.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-741c38c25c2708f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/reports-public.js:850", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/reports-public.js:850"}, "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-25ac6077fe5f9706", "name": "Commented-code block (5 lines) in server/routes/admin-billing-health.js:99", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-billing-health.js:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f515ddc827db9300", "name": "Legacy-named symbol `service_report_v1` in server/routes/documents.js:605", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/routes/documents.js:605"}, "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-c5768b861d14bde5", "name": "Commented-code block (5 lines) in server/routes/documents.js:929", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/documents.js:929"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a56becf05ecf7547", "name": "Commented-code block (7 lines) in server/routes/admin-triage.js:191", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/admin-triage.js:191"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bab4c96708ee4e35", "name": "Commented-code block (5 lines) in server/routes/admin-invoices.js:644", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-invoices.js:644"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e296863267e4739", "name": "Commented-code block (5 lines) in server/routes/admin-pest-pressure.js:34", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-pest-pressure.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be1e95a3934318f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-referrals.js:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-referrals.js:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8684fa61a58b7f4", "name": "Commented-code block (5 lines) in server/routes/lead-webhook.js:168", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/lead-webhook.js:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b70355d1a573c84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/bouncie.js:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/bouncie.js:76"}, "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-e38117dd82e0c5ad", "name": "Commented-code block (6 lines) in server/routes/admin-customers.js:980", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-customers.js:980"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55d697fad6c1eaf7", "name": "Commented-code block (6 lines) in server/routes/stripe-terminal.js:58", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/stripe-terminal.js:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82ada9881b1f7c53", "name": "Commented-code block (5 lines) in server/routes/admin-geofence.js:137", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-geofence.js:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2659b8a8bdf49423", "name": "Commented-code block (6 lines) in server/routes/property-lookup-v2.js:125", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/property-lookup-v2.js:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1e8c02f073929db", "name": "Commented-code block (5 lines) in server/routes/track-public.js:56", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/track-public.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-73ed390616f13412", "name": "Commented-code block (6 lines) in server/routes/onboarding.js:418", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/onboarding.js:418"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8129cab38fd72683", "name": "Commented-code block (9 lines) in server/routes/public-quote.js:112", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/public-quote.js:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-96e5a62ecb2ca01a", "name": "Commented-code block (5 lines) in server/routes/admin-health.js:96", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-health.js:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19712ddd52396ae8", "name": "Commented-code block (5 lines) in server/routes/admin-estimates.js:657", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-estimates.js:657"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e0b3be7c338514f", "name": "Legacy-named symbol `customer_copy` in server/routes/admin-lawn-assessment.js:1246", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/routes/admin-lawn-assessment.js:1246"}, "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-3a91c51e6ff16c0c", "name": "Commented-code block (5 lines) in server/routes/admin-lawn-assessment.js:237", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-lawn-assessment.js:237"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abc330b43e8a7947", "name": "Commented-code block (8 lines) in server/routes/stripe-webhook-helpers.js:7", "shortDescription": {"text": "Commented-code block (8 lines) in server/routes/stripe-webhook-helpers.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38b5f030ea577b19", "name": "Commented-code block (5 lines) in server/routes/pay-v2.js:244", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/pay-v2.js:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0738a222c1347f1", "name": "Commented-code block (5 lines) in server/routes/tech-track.js:90", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/tech-track.js:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02e50ad9355d2d25", "name": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/routes/admin-sms-templates.js:6", "shortDescription": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/routes/admin-sms-templates.js:6"}, "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-e7e3bae1a2ec793b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-gbp.js:232", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-gbp.js:232"}, "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-32416bd6b585138c", "name": "Commented-code block (6 lines) in server/routes/tracking.js:89", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/tracking.js:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4239e75d020466f", "name": "Commented-code block (6 lines) in server/routes/admin-dashboard.js:23", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-dashboard.js:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6010bb3ffcc85e0", "name": "Commented-code block (5 lines) in server/routes/admin-social-media.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-social-media.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0a6f4e4bb4f5d7a", "name": "Commented-code block (5 lines) in server/routes/admin-equipment-systems.js:155", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-equipment-systems.js:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df2a372929db7dd6", "name": "Commented-code block (5 lines) in server/routes/twilio-voice-webhook.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/twilio-voice-webhook.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99911aa3f831c7e5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/twilio-voice-webhook.js:283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/twilio-voice-webhook.js:283"}, "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-747b43e06601896d", "name": "Commented-code block (6 lines) in server/routes/admin-notifications.js:18", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-notifications.js:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-607e2ff55a960b13", "name": "Commented-code block (6 lines) in server/routes/admin-communications.js:228", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-communications.js:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cd2c4fc1bee689b", "name": "Commented-code block (7 lines) in server/routes/stripe-webhook.js:82", "shortDescription": {"text": "Commented-code block (7 lines) in server/routes/stripe-webhook.js:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c64a32fafe76b30", "name": "Commented-code block (5 lines) in server/routes/admin-schedule.js:270", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-schedule.js:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54d112c295f60363", "name": "Commented-code block (5 lines) in server/routes/admin-intelligence-bar.js:106", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-intelligence-bar.js:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a5849c069e2d345", "name": "Commented-code block (5 lines) in server/routes/admin-newsletter.js:36", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-newsletter.js:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f186471de5a20c0", "name": "Commented-code block (5 lines) in server/routes/admin-content-v2.js:188", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-content-v2.js:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9f1ace586287e94", "name": "Commented-code block (5 lines) in server/routes/admin-requests.js:121", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-requests.js:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4385a5bac02bf371", "name": "Commented-code block (9 lines) in server/routes/twilio-webhook.js:144", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/twilio-webhook.js:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0c4b1b324001eaa", "name": "Commented-code block (6 lines) in server/routes/admin-settings.js:104", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-settings.js:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c221f20f708c3c0e", "name": "Commented-code block (9 lines) in server/routes/admin-push.js:60", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/admin-push.js:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69849ed78ef63ff5", "name": "Legacy-named symbol `revokeOld` in server/routes/admin-service-outlines.js:397", "shortDescription": {"text": "Legacy-named symbol `revokeOld` in server/routes/admin-service-outlines.js:397"}, "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-b82c2ec81213fbc6", "name": "Commented-code block (6 lines) in server/routes/admin-inventory.js:1352", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/admin-inventory.js:1352"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c259482fcbad2843", "name": "Legacy-named symbol `report_copy` in server/routes/admin-protocols.js:1132", "shortDescription": {"text": "Legacy-named symbol `report_copy` in server/routes/admin-protocols.js:1132"}, "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-8e6cd92abee33a71", "name": "Commented-code block (5 lines) in server/routes/tech-timetracking.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/tech-timetracking.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97d56d54fc006261", "name": "Commented-code block (9 lines) in server/routes/public-newsletter.js:179", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/public-newsletter.js:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-825e839066dab108", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/public-newsletter.js:308", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/public-newsletter.js:308"}, "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-38ce68066d9b7d91", "name": "Commented-code block (5 lines) in server/routes/admin-backlink-agent-v2.js:366", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-backlink-agent-v2.js:366"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-683d9c7255fc6acb", "name": "Commented-code block (9 lines) in server/routes/webhooks-bouncie.js:179", "shortDescription": {"text": "Commented-code block (9 lines) in server/routes/webhooks-bouncie.js:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39fd781083e495f1", "name": "Commented-code block (5 lines) in server/routes/admin-payments-reconcile.js:16", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-payments-reconcile.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ffe275a418173ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-call-recordings.js:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-call-recordings.js:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f06e63d6894c464", "name": "Commented-code block (11 lines) in server/routes/estimate-slots-public.js:303", "shortDescription": {"text": "Commented-code block (11 lines) in server/routes/estimate-slots-public.js:303"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15356e7df968b2e0", "name": "Commented-code block (6 lines) in server/routes/webhooks-sendgrid.js:195", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/webhooks-sendgrid.js:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31ed276f9cc95523", "name": "Legacy-named symbol `newsletter_default_v1` in server/routes/admin-email-templates.js:177", "shortDescription": {"text": "Legacy-named symbol `newsletter_default_v1` in server/routes/admin-email-templates.js:177"}, "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-8183fea1b5fe85aa", "name": "Legacy-named symbol `customer_copy` in server/routes/lawn-health.js:158", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/routes/lawn-health.js:158"}, "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-2e3f2c840dc015b7", "name": "Commented-code block (5 lines) in server/routes/admin-customer-intel.js:36", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-customer-intel.js:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60384b9cbc6caf1f", "name": "Commented-code block (5 lines) in server/routes/admin-agent-decisions.js:306", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-agent-decisions.js:306"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d84dd87a08378ad", "name": "Commented-code block (6 lines) in server/routes/booking.js:411", "shortDescription": {"text": "Commented-code block (6 lines) in server/routes/booking.js:411"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c75eb94caa085ed3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/booking.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/booking.js:28"}, "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-85bd7516628c6efb", "name": "Commented-code block (5 lines) in server/routes/review-gate.js:55", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/review-gate.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f8d895c89549715", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/feed.js:372", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/feed.js:372"}, "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-2fde9f2c4c3b7198", "name": "Commented-code block (5 lines) in server/routes/admin-customer-turf-profile.js:33", "shortDescription": {"text": "Commented-code block (5 lines) in server/routes/admin-customer-turf-profile.js:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8005af27e2d1732a", "name": "Commented-code block (15 lines) in server/routes/estimate-public.js:111", "shortDescription": {"text": "Commented-code block (15 lines) in server/routes/estimate-public.js:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5aa8539c7220515", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/estimate-public.js:4617", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/estimate-public.js:4617"}, "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-875bcce38149b928", "name": "Commented-code block (5 lines) in server/sockets/auth.js:65", "shortDescription": {"text": "Commented-code block (5 lines) in server/sockets/auth.js:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e659a1cd2a5a9c85", "name": "Commented-code block (6 lines) in server/sockets/index.js:51", "shortDescription": {"text": "Commented-code block (6 lines) in server/sockets/index.js:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2e06515cd0e91c5", "name": "Commented-code block (5 lines) in server/services/lawn-assessment.js:252", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/lawn-assessment.js:252"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df0e0c8213acad4b", "name": "Legacy-named symbol `house_voice_suggest_v1` in server/services/sms-suggest-mode.js:55", "shortDescription": {"text": "Legacy-named symbol `house_voice_suggest_v1` in server/services/sms-suggest-mode.js:55"}, "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-c0880f22476b3a58", "name": "Commented-code block (7 lines) in server/services/sms-suggest-mode.js:292", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/sms-suggest-mode.js:292"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e23bffa058861d5", "name": "Commented-code block (5 lines) in server/services/stripe-banking.js:801", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/stripe-banking.js:801"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa40efd3ec4517a5", "name": "Commented-code block (7 lines) in server/services/twilio.js:12", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/twilio.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35e55ee2a91b6bdb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/knowledge-base.js:309", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/knowledge-base.js:309"}, "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-461005428bf30662", "name": "Commented-code block (7 lines) in server/services/estimate-converter.js:136", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/estimate-converter.js:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e6ae0c5768a0d05", "name": "Commented-code block (5 lines) in server/services/newsletter-autopilot.js:102", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/newsletter-autopilot.js:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e21376454cd7a30", "name": "Commented-code block (9 lines) in server/services/lead-response-tools.js:213", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/lead-response-tools.js:213"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37bf0b837089385c", "name": "Commented-code block (7 lines) in server/services/rebooker.js:25", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/rebooker.js:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb554c712028df9b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bi-agent.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bi-agent.js:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eabcbe5365d4945b", "name": "Commented-code block (5 lines) in server/services/trimmed-system-prompts.js:13", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/trimmed-system-prompts.js:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b8b1566760867d4", "name": "Commented-code block (5 lines) in server/services/lawn-photo-merge.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/lawn-photo-merge.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8851c549bf51a8c", "name": "Commented-code block (6 lines) in server/services/dashboard-alerts-cron.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/dashboard-alerts-cron.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3bfea5e7aee1c252", "name": "Commented-code block (16 lines) in server/services/google-business.js:453", "shortDescription": {"text": "Commented-code block (16 lines) in server/services/google-business.js:453"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61231d0d7df77178", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/google-business.js:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/google-business.js:249"}, "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-e5552cfecdfe0dcc", "name": "Commented-code block (7 lines) in server/services/bi-agent-tools.js:355", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/bi-agent-tools.js:355"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-793ed4f597736728", "name": "Commented-code block (6 lines) in server/services/sms-draft-verifier.js:88", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/sms-draft-verifier.js:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20f8a7e49d65fb66", "name": "Commented-code block (6 lines) in server/services/event-freshness.js:62", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/event-freshness.js:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d48776be4e9cfed", "name": "Commented-code block (6 lines) in server/services/admin-estimate-persistence.js:216", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/admin-estimate-persistence.js:216"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8b42b1bbd3e6415", "name": "Commented-code block (5 lines) in server/services/newsletter-draft.js:175", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/newsletter-draft.js:175"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f5e4ca36082ba9e", "name": "Commented-code block (6 lines) in server/services/sms-shadow-backfill.js:42", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/sms-shadow-backfill.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6dcc95b80442b5c", "name": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-graduation.js:137", "shortDescription": {"text": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-graduation.js:137"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-541781d2b209a71a", "name": "Commented-code block (5 lines) in server/services/sms-graduation.js:154", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/sms-graduation.js:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-799e1caaab6ba08e", "name": "Commented-code block (7 lines) in server/services/email-template.js:322", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/email-template.js:322"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16b349167bbcbc81", "name": "Commented-code block (10 lines) in server/services/service-completion-profiles.js:5", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/service-completion-profiles.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2391da3e8c949b22", "name": "Commented-code block (5 lines) in server/services/prepaid-series.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/prepaid-series.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7657bcc3e133ad3", "name": "Commented-code block (9 lines) in server/services/event-ingestion.js:40", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/event-ingestion.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c119f754fe66bc86", "name": "Commented-code block (7 lines) in server/services/dispatch-alerts.js:336", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/dispatch-alerts.js:336"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30e0dc21b2385efc", "name": "Commented-code block (5 lines) in server/services/estimate-follow-up.js:119", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/estimate-follow-up.js:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e739e85a30fce5e6", "name": "Commented-code block (5 lines) in server/services/bouncie.js:350", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/bouncie.js:350"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-844b926ece3ce4d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bouncie.js:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bouncie.js:59"}, "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-78343aad2d00a1f6", "name": "Commented-code block (6 lines) in server/services/scheduler.js:46", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/scheduler.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05da6b6487f3e975", "name": "Commented-code block (8 lines) in server/services/newsletter-sender.js:32", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/newsletter-sender.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ebdbe03ad0fe9694", "name": "Commented-code block (5 lines) in server/services/estimate-expiration.js:47", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/estimate-expiration.js:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75a6c53faf3357ca", "name": "Commented-code block (7 lines) in server/services/estimate-slot-availability.js:651", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/estimate-slot-availability.js:651"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c533d8de401ee01", "name": "Commented-code block (5 lines) in server/services/content-scheduler.js:167", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content-scheduler.js:167"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07cdad222539dca0", "name": "Commented-code block (10 lines) in server/services/lead-source-resolver.js:31", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/lead-source-resolver.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1f28eb5b2616461", "name": "Legacy-named symbol `house_voice_auto_send_v1` in server/services/sms-auto-send.js:42", "shortDescription": {"text": "Legacy-named symbol `house_voice_auto_send_v1` in server/services/sms-auto-send.js:42"}, "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-b636ae5a470ca39f", "name": "Commented-code block (6 lines) in server/services/sms-auto-send.js:63", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/sms-auto-send.js:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e50d110d447f0ffc", "name": "Commented-code block (5 lines) in server/services/price-sync.js:72", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/price-sync.js:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c54127e4142d65f1", "name": "Commented-code block (7 lines) in server/services/pest-recap.js:86", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/pest-recap.js:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-045d91753b23cb09", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/forecast-analyzer.js:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/forecast-analyzer.js:30"}, "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-69532cb6e48e0feb", "name": "Commented-code block (5 lines) in server/services/recurring-appointment-seeder.js:89", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/recurring-appointment-seeder.js:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-29b371c93bcac2b2", "name": "Commented-code block (5 lines) in server/services/project-types.js:116", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/project-types.js:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea3e5329ad122f32", "name": "Commented-code block (5 lines) in server/services/reschedule-sms.js:160", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/reschedule-sms.js:160"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f1feeb0652c7c12", "name": "Legacy-named symbol `inferred_v1` in server/services/service-closeout-requirements.js:14", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in server/services/service-closeout-requirements.js:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9be7c4b9004fa95c", "name": "Commented-code block (11 lines) in server/services/track-transitions.js:40", "shortDescription": {"text": "Commented-code block (11 lines) in server/services/track-transitions.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1a574d2b891fb1b", "name": "Commented-code block (5 lines) in server/services/lead-attribution.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/lead-attribution.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-190ac92be0265a8f", "name": "Legacy-named symbol `legacy_gemini_v1` in server/services/call-route-decisions.js:72", "shortDescription": {"text": "Legacy-named symbol `legacy_gemini_v1` in server/services/call-route-decisions.js:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd9b07899dc5b600", "name": "Legacy-named symbol `lawn_snapshot_v1` in server/services/lawn-snapshot.js:12", "shortDescription": {"text": "Legacy-named symbol `lawn_snapshot_v1` in server/services/lawn-snapshot.js:12"}, "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-6539d35883c8cc50", "name": "Commented-code block (7 lines) in server/services/lawn-snapshot.js:365", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/lawn-snapshot.js:365"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8777002e183c475", "name": "Commented-code block (6 lines) in server/services/call-triage-flags.js:44", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/call-triage-flags.js:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ce618e5a79d041e", "name": "Commented-code block (5 lines) in server/services/waveguard-existing-services.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/waveguard-existing-services.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7de89cbebf547b53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sms-media.js:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sms-media.js:135"}, "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-2ccaa3699192bd15", "name": "Commented-code block (7 lines) in server/services/tech-late-detector.js:78", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/tech-late-detector.js:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7815c7d9fc1dce97", "name": "Legacy-named symbol `rendered_placeholder_copy` in server/services/email-template-library.js:170", "shortDescription": {"text": "Legacy-named symbol `rendered_placeholder_copy` in server/services/email-template-library.js:170"}, "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-9152f506f1bb291b", "name": "Commented-code block (5 lines) in server/services/email-template-library.js:546", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/email-template-library.js:546"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3186991ae27bb592", "name": "Commented-code block (7 lines) in server/services/review-request.js:247", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/review-request.js:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9f0bda2102f0279", "name": "Commented-code block (7 lines) in server/services/estimate-membership-context.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/estimate-membership-context.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7330a5bfd87ffb00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/route-optimizer.js:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/route-optimizer.js:114"}, "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-326c048b073daee0", "name": "Commented-code block (5 lines) in server/services/annual-prepay-renewals.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/annual-prepay-renewals.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daedc768c92c0c95", "name": "Legacy-named symbol `inferred_v1` in server/services/service-library.js:445", "shortDescription": {"text": "Legacy-named symbol `inferred_v1` in server/services/service-library.js:445"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39797978d2bc1268", "name": "Commented-code block (8 lines) in server/services/service-library.js:246", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/service-library.js:246"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-177cad32da1cac08", "name": "Commented-code block (7 lines) in server/services/invoice.js:649", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/invoice.js:649"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-695bbbbbbe2cc90b", "name": "Commented-code block (12 lines) in server/services/estimate-deposits.js:58", "shortDescription": {"text": "Commented-code block (12 lines) in server/services/estimate-deposits.js:58"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7757a5bcf3f4725", "name": "Commented-code block (8 lines) in server/services/context-aggregator.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/context-aggregator.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a05515f2d248a85d", "name": "Commented-code block (5 lines) in server/services/lawn-intelligence.js:41", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/lawn-intelligence.js:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec8dcae9406c3771", "name": "Commented-code block (7 lines) in server/services/lead-response-agent.js:247", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/lead-response-agent.js:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-98d13f7fc36d13dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/lead-response-agent.js:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/lead-response-agent.js:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-605a007ff606a05a", "name": "Commented-code block (5 lines) in server/services/social-content-studio.js:350", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/social-content-studio.js:350"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88747936629e7b5a", "name": "Commented-code block (5 lines) in server/services/social-media.js:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/social-media.js:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b09c76e31a517251", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-media.js:696", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-media.js:696"}, "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-61fb60da6f22566d", "name": "Commented-code block (6 lines) in server/services/rain-out.js:238", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/rain-out.js:238"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-499356e48382371f", "name": "Commented-code block (6 lines) in server/services/tech-status.js:283", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/tech-status.js:283"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99ab7986de6f19d5", "name": "Commented-code block (6 lines) in server/services/social-card-renderer.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/social-card-renderer.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7c8ffef550606ef", "name": "Commented-code block (7 lines) in server/services/sendgrid-mail.js:74", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/sendgrid-mail.js:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6321922300071ef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sendgrid-mail.js:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sendgrid-mail.js:135"}, "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-9c92cc3cfbbf1ed0", "name": "Commented-code block (5 lines) in server/services/newsletter-validator.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/newsletter-validator.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0fd1dc3abd93f99", "name": "Legacy-named symbol `gemini_v2` in server/services/call-field-candidates.js:61", "shortDescription": {"text": "Legacy-named symbol `gemini_v2` in server/services/call-field-candidates.js:61"}, "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-3a94b93e363d4c6b", "name": "Commented-code block (9 lines) in server/services/sms-shadow-drafter.js:30", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/sms-shadow-drafter.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9299680530631173", "name": "Commented-code block (6 lines) in server/services/dashboard-alerts.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/dashboard-alerts.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-509d1893e1c70697", "name": "Commented-code block (5 lines) in server/services/lawn-grass-context.js:62", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/lawn-grass-context.js:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41ea227539c60dbb", "name": "Commented-code block (5 lines) in server/services/appointment-reminders.js:54", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/appointment-reminders.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c85c4bbba21cfc78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/appointment-reminders.js:183", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/appointment-reminders.js:183"}, "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-bd8f14e266f18e8e", "name": "Commented-code block (7 lines) in server/services/geofence-handler.js:416", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/geofence-handler.js:416"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-603d14dc85008652", "name": "Commented-code block (8 lines) in server/services/call-recording-processor.js:831", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/call-recording-processor.js:831"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90c2c207f6c91947", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/call-recording-processor.js:799", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/call-recording-processor.js:799"}, "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-b8faf8a5698c3f34", "name": "Legacy-named symbol `report_copy` in server/services/lawn-protocol-operating-layer.js:51", "shortDescription": {"text": "Legacy-named symbol `report_copy` in server/services/lawn-protocol-operating-layer.js:51"}, "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-d1a01d37d52965c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-feed.js:215", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-feed.js:215"}, "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-1b35f50d7ee85915", "name": "Commented-code block (5 lines) in server/services/geofence-matcher.js:50", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/geofence-matcher.js:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-151d8d93ed126d50", "name": "Commented-code block (5 lines) in server/services/invoice-followups.js:337", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/invoice-followups.js:337"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9eef6ba0c86c896", "name": "Commented-code block (5 lines) in server/services/notification-triggers.js:333", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/notification-triggers.js:333"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3281cda1971596a1", "name": "Commented-code block (6 lines) in server/services/slot-reservation.js:115", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/slot-reservation.js:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6372eb90e652d945", "name": "Commented-code block (8 lines) in server/services/estimate-winloss.js:49", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/estimate-winloss.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae5d096bc2b61144", "name": "Commented-code block (5 lines) in server/services/payment-method-consents.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/payment-method-consents.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-892f8d4f8ae4c612", "name": "Commented-code block (5 lines) in server/services/event-dedup.js:208", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/event-dedup.js:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50a7c19f24427681", "name": "Commented-code block (5 lines) in server/services/newsletter-subscribers.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/newsletter-subscribers.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c2bd0bd1674543b", "name": "Commented-code block (5 lines) in server/services/token-health.js:123", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/token-health.js:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-173743c840e95d5b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/token-health.js:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/token-health.js:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9a83e2a91e23fdd", "name": "Commented-code block (10 lines) in server/services/event-normalizer.js:117", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/event-normalizer.js:117"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70b6be4f5bf2fa53", "name": "Legacy-named symbol `tree_shrub_closeout_v1` in server/services/tree-shrub-closeout.js:1", "shortDescription": {"text": "Legacy-named symbol `tree_shrub_closeout_v1` in server/services/tree-shrub-closeout.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e474af418fc070af", "name": "Commented-code block (7 lines) in server/services/tree-shrub-closeout.js:400", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/tree-shrub-closeout.js:400"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-291f8304c6c40b54", "name": "Commented-code block (6 lines) in server/services/property-lookup-canary.js:54", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/property-lookup-canary.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d5b835206ddf6e0", "name": "Commented-code block (7 lines) in server/services/geocoder.js:40", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/geocoder.js:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c9d5ef6cb6c7e26", "name": "Commented-code block (5 lines) in server/services/stripe.js:20", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/stripe.js:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acde9f9147a0a2f7", "name": "Commented-code block (5 lines) in server/services/project-email.js:294", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/project-email.js:294"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a84f1f7953e72eb5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/retention-agent.js:21", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/retention-agent.js:21"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e3357984d5afbe00", "name": "Legacy-named symbol `customer_copy` in server/services/lawn-recommendation-engine.js:123", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/services/lawn-recommendation-engine.js:123"}, "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-1b9e0e680c804f52", "name": "Commented-code block (6 lines) in server/services/completion-attempts.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/completion-attempts.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a4b6178df0d468b", "name": "Legacy-named symbol `complete_service_one_tap_v1` in server/services/completion-defaults-resolver.js:72", "shortDescription": {"text": "Legacy-named symbol `complete_service_one_tap_v1` in server/services/completion-defaults-resolver.js:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce1cbee6a4713347", "name": "Commented-code block (5 lines) in server/services/completion-defaults-resolver.js:32", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/completion-defaults-resolver.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-130d960efd3c530e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/competitor-tracker.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/competitor-tracker.js:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33cd3c3b6a1e3f1a", "name": "Commented-code block (5 lines) in server/services/availability.js:129", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/availability.js:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aee72d9a20750158", "name": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-shadow-judge.js:34", "shortDescription": {"text": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-shadow-judge.js:34"}, "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-f082274b87d1d09a", "name": "Commented-code block (7 lines) in server/services/sms-shadow-judge.js:253", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/sms-shadow-judge.js:253"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4170c837b7378c1f", "name": "Commented-code block (5 lines) in server/services/billing-cron.js:98", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/billing-cron.js:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17b5e38ea06b0358", "name": "Commented-code block (5 lines) in server/services/job-status.js:303", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/job-status.js:303"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b294005fa230d24", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/job-status.js:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/job-status.js:240"}, "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-37c8cb10f0ae4380", "name": "Commented-code block (5 lines) in server/services/completion-recap.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/completion-recap.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0903ae2070da706", "name": "Legacy-named symbol `service_report_satellite_treatment_map_v1` in server/services/maps/basemap-provider.js:16", "shortDescription": {"text": "Legacy-named symbol `service_report_satellite_treatment_map_v1` in server/services/maps/basemap-provider.js:16"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2aeb5a2be28350e", "name": "Commented-code block (5 lines) in server/services/content-astro/frontmatter.js:74", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content-astro/frontmatter.js:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4dd4afc6761724aa", "name": "Commented-code block (10 lines) in server/services/content-astro/facts-bank-loader.js:42", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/content-astro/facts-bank-loader.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d998ed4a91a52f3a", "name": "Commented-code block (7 lines) in server/services/content-astro/spoke-sites.js:80", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/content-astro/spoke-sites.js:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d1869779d4778f0", "name": "Commented-code block (7 lines) in server/services/content-astro/schema-validator.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/content-astro/schema-validator.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-acdbf0eae914b842", "name": "Commented-code block (5 lines) in server/services/content-astro/facts-bank-auditor.js:49", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content-astro/facts-bank-auditor.js:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3fa222d2936b2c59", "name": "Commented-code block (6 lines) in server/services/content-astro/pages-poll.js:56", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content-astro/pages-poll.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a73102f86720e229", "name": "Commented-code block (5 lines) in server/services/content-astro/astro-publisher.js:61", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content-astro/astro-publisher.js:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3134230eb02727f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content-astro/astro-publisher.js:495", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content-astro/astro-publisher.js:495"}, "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-e62daa9dadb75d3d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/email/auto-unsubscribe.js:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/email/auto-unsubscribe.js:62"}, "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-f862873c8ad279bf", "name": "Commented-code block (5 lines) in server/services/pricing-engine/modifiers.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/modifiers.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c02e12c247a324d0", "name": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/services/pricing-engine/service-pricing.js:", "shortDescription": {"text": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/services/pricing-engine/service-pricing.js:838"}, "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-9061d7cf3d2cd7d8", "name": "Commented-code block (8 lines) in server/services/pricing-engine/service-pricing.js:1505", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/pricing-engine/service-pricing.js:1505"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f711b42161b87b8", "name": "Commented-code block (5 lines) in server/services/pricing-engine/estimate-engine.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/estimate-engine.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0012642da348b2e6", "name": "Legacy-named symbol `lawn_pricing_v2` in server/services/pricing-engine/db-bridge.js:736", "shortDescription": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/services/pricing-engine/db-bridge.js:736"}, "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-7ae7f4da760dd4fb", "name": "Commented-code block (5 lines) in server/services/pricing-engine/db-bridge.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/db-bridge.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-985d453f2c5102ac", "name": "Legacy-named symbol `stinging_v2` in server/services/pricing-engine/v1-legacy-mapper.js:159", "shortDescription": {"text": "Legacy-named symbol `stinging_v2` in server/services/pricing-engine/v1-legacy-mapper.js:159"}, "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-00334299a1c5bd8a", "name": "Commented-code block (5 lines) in server/services/pricing-engine/v1-legacy-mapper.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/v1-legacy-mapper.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df9d21a0161ff39f", "name": "Commented-code block (7 lines) in server/services/pricing-engine/discount-engine.js:18", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/pricing-engine/discount-engine.js:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-415b26b6776876b6", "name": "Commented-code block (5 lines) in server/services/pricing-engine/constants.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/constants.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed8a092f3c8930a9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai-assistant/managed-assistant.js:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai-assistant/managed-assistant.js:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d793f3088857fcf", "name": "Commented-code block (6 lines) in server/services/ai-assistant/tools-expanded.js:404", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/ai-assistant/tools-expanded.js:404"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13134a268adcc832", "name": "Commented-code block (7 lines) in server/services/service-report/service-line-configs.js:168", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/service-report/service-line-configs.js:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d654783e6b97ab4f", "name": "Commented-code block (5 lines) in server/services/service-report/turf-height.js:27", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/turf-height.js:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5bf81ca3cedd302", "name": "Legacy-named symbol `service_report_v1` in server/services/service-report/email-delivery.js:192", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/email-delivery.js:192"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be27bd6ace188b4f", "name": "Legacy-named symbol `service_report_ai_summary_v1` in server/services/service-report/ai-summary.js:5", "shortDescription": {"text": "Legacy-named symbol `service_report_ai_summary_v1` in server/services/service-report/ai-summary.js:5"}, "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-8e7c40acdca959cc", "name": "Commented-code block (5 lines) in server/services/service-report/dynamic-context.js:273", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/dynamic-context.js:273"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbdc2c17922a0580", "name": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery-queue.js:46", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery-queue.js:46"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f3fd88b0a5d9c6b", "name": "Commented-code block (5 lines) in server/services/service-report/activity-indicators.js:699", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/activity-indicators.js:699"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23ccd364dbacbd5b", "name": "Legacy-named symbol `service_report_v1` in server/services/service-report/pdf-queue.js:82", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/pdf-queue.js:82"}, "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-cd17346578ae80cc", "name": "Legacy-named symbol `banned_copy` in server/services/service-report/photo-analysis.js:87", "shortDescription": {"text": "Legacy-named symbol `banned_copy` in server/services/service-report/photo-analysis.js:87"}, "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-82e3ef4cc54616f3", "name": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery.js:30", "shortDescription": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery.js:30"}, "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-795c392fcf780ee8", "name": "Commented-code block (5 lines) in server/services/service-report/irrigation-advice.js:86", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/irrigation-advice.js:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2818a49a268125d7", "name": "Legacy-named symbol `service_report_premium_experience_v1` in server/services/service-report/premium-experience.js:5", "shortDescription": {"text": "Legacy-named symbol `service_report_premium_experience_v1` in server/services/service-report/premium-experience.js:5"}, "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-c5aeee6fcce454fe", "name": "Legacy-named symbol `sms_preview_v1` in server/services/service-report/preview-image.js:9", "shortDescription": {"text": "Legacy-named symbol `sms_preview_v1` in server/services/service-report/preview-image.js:9"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5975aa50f43d0d5d", "name": "Commented-code block (5 lines) in server/services/service-report/pdf-storage.js:27", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/pdf-storage.js:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3cb4635417f3317", "name": "Commented-code block (5 lines) in server/services/service-report/application-conditions.js:131", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/application-conditions.js:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b87e3d61becae4b9", "name": "Legacy-named symbol `companion_findings_banned_copy` in server/services/service-report/companion-completions.js:170", "shortDescription": {"text": "Legacy-named symbol `companion_findings_banned_copy` in server/services/service-report/companion-completions.js:170"}, "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-b651f6d3a4e060e5", "name": "Legacy-named symbol `customer_copy` in server/services/service-report/report-data.js:1485", "shortDescription": {"text": "Legacy-named symbol `customer_copy` in server/services/service-report/report-data.js:1485"}, "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-4d79fc37f72b20c0", "name": "Commented-code block (5 lines) in server/services/service-report/report-data.js:234", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/service-report/report-data.js:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53a00317d7e21b60", "name": "Commented-code block (6 lines) in server/services/service-report/report-copy-context.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/service-report/report-copy-context.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d4ae225993f0bf2", "name": "Commented-code block (5 lines) in server/services/property-lookup/ai-property-lookup.js:181", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/property-lookup/ai-property-lookup.js:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d367af5254762f54", "name": "Commented-code block (6 lines) in server/services/property-lookup/parcel-gis.js:170", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/property-lookup/parcel-gis.js:170"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8ba6a55c876b118", "name": "Commented-code block (5 lines) in server/services/property-lookup/wdo-history-lookup.js:168", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/property-lookup/wdo-history-lookup.js:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-edd3df684910a1a8", "name": "Commented-code block (5 lines) in server/services/property-lookup/lookup-cache.js:56", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/property-lookup/lookup-cache.js:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8af6a8f8bc38be9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/estimate-tools.js:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/estimate-tools.js:79"}, "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-83b0ed0521b5f9ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/schedule-tools.js:685", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/schedule-tools.js:685"}, "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-30adf9e4a2fc8772", "name": "Commented-code block (5 lines) in server/services/intelligence-bar/review-tools.js:389", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/intelligence-bar/review-tools.js:389"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3dfe9cc2f30e277d", "name": "Commented-code block (7 lines) in server/services/intelligence-bar/dashboard-tools.js:244", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/intelligence-bar/dashboard-tools.js:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1cd62763cf29f43b", "name": "Commented-code block (6 lines) in server/services/intelligence-bar/comms-tools.js:442", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/intelligence-bar/comms-tools.js:442"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bdd93bcc8052af2c", "name": "Commented-code block (5 lines) in server/services/pest-pressure/customer-view.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pest-pressure/customer-view.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5464100d26f975d", "name": "Commented-code block (8 lines) in server/services/pest-pressure/store.js:17", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/pest-pressure/store.js:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e0bbcc27cb3f832", "name": "Commented-code block (7 lines) in server/services/pest-pressure/config.js:11", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/pest-pressure/config.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62d98a263750873d", "name": "Commented-code block (5 lines) in server/services/pest-pressure/orchestrate.js:85", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/pest-pressure/orchestrate.js:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e00f84b2e948cca", "name": "Commented-code block (9 lines) in server/services/pest-pressure/review-window.js:35", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/pest-pressure/review-window.js:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb62356f2908e6c2", "name": "Commented-code block (8 lines) in server/services/pest-pressure/components/recurring-issue.js:53", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/pest-pressure/components/recurring-issue.js:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b1c7a6ddce44cc6", "name": "Commented-code block (5 lines) in server/services/eval/incident-regression.js:44", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/eval/incident-regression.js:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5f8bd748e42d9db", "name": "Commented-code block (8 lines) in server/services/messaging/providers/twilio-sms.js:91", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/messaging/providers/twilio-sms.js:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6649997cd5bd922", "name": "Commented-code block (8 lines) in server/services/messaging/validators/consent.js:35", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/messaging/validators/consent.js:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9236129e1738009", "name": "Commented-code block (6 lines) in server/services/content/uniqueness-gate.js:317", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/uniqueness-gate.js:317"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a647713f3df8be01", "name": "Commented-code block (8 lines) in server/services/content/decision-router.js:54", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/content/decision-router.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f06c6fe6104ac649", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/content-agent.js:29", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/content-agent.js:29"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fcf2faa802065e4", "name": "Commented-code block (5 lines) in server/services/content/intercept-brief-seeder.js:84", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/intercept-brief-seeder.js:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7edad0074252e362", "name": "Commented-code block (5 lines) in server/services/content/scoring-config.js:21", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/scoring-config.js:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e034800c71b97f14", "name": "Commented-code block (6 lines) in server/services/content/blog-writer.js:13", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/blog-writer.js:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e29707df8cd75d06", "name": "Commented-code block (5 lines) in server/services/content/protected-pages.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/protected-pages.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e88b44b796302fca", "name": "Commented-code block (7 lines) in server/services/content/content-brief-builder.js:159", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/content/content-brief-builder.js:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5832951b75d4a11", "name": "Commented-code block (7 lines) in server/services/content/autonomous-runner.js:42", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/content/autonomous-runner.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c71c553ab5047619", "name": "Commented-code block (5 lines) in server/services/content/post-publish-visibility-worker.js:181", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/post-publish-visibility-worker.js:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e268cccb469dcd7", "name": "Commented-code block (6 lines) in server/services/content/autonomous-pr-poller.js:310", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/autonomous-pr-poller.js:310"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ef4aa0883287279", "name": "Commented-code block (7 lines) in server/services/content/opportunity-queue.js:151", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/content/opportunity-queue.js:151"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0507c0b8c3956ced", "name": "Commented-code block (6 lines) in server/services/content/pii-redactor.js:72", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/pii-redactor.js:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0349ea93c230ed91", "name": "Commented-code block (6 lines) in server/services/content/content-guardrails.js:80", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/content-guardrails.js:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6022d848ea7b5f72", "name": "Commented-code block (6 lines) in server/services/content/claims-ledger-validator.js:213", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/claims-ledger-validator.js:213"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62004f1e6b09385e", "name": "Commented-code block (8 lines) in server/services/content/seo-completion-gate.js:211", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/content/seo-completion-gate.js:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e80a1a8fb3d9f07", "name": "Commented-code block (8 lines) in server/services/content/spoke-seed-seeder.js:72", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/content/spoke-seed-seeder.js:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07c5b2be17a33899", "name": "Commented-code block (6 lines) in server/services/content/internal-link-pr-executor.js:228", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/internal-link-pr-executor.js:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b5b0f315d2281ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/internal-link-pr-executor.js:1054", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/internal-link-pr-executor.js:1054"}, "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-07265e73665cd993", "name": "Commented-code block (8 lines) in server/services/content/content-quality-gate.js:38", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/content/content-quality-gate.js:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6325b6e9201b698e", "name": "Commented-code block (5 lines) in server/services/content/customer-insights-miner.js:231", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/customer-insights-miner.js:231"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0baaf79b54b76285", "name": "Commented-code block (5 lines) in server/services/content/fact-check-gate.js:123", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/fact-check-gate.js:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4eb14c90d6e9d932", "name": "Commented-code block (8 lines) in server/services/content/agents/brief-driven-tools.js:250", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/content/agents/brief-driven-tools.js:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-340b51c051f5153b", "name": "Commented-code block (5 lines) in server/services/content/agents/agent-dispatcher.js:101", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/content/agents/agent-dispatcher.js:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5338ab27ce23fd3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/agents/agent-dispatcher.js:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/agents/agent-dispatcher.js:136"}, "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-6d4c2e4f1eb52679", "name": "Commented-code block (6 lines) in server/services/content/agents/writer-agent-config.js:30", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/content/agents/writer-agent-config.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd93ea26c39e450f", "name": "Commented-code block (5 lines) in server/services/address-validation/index.js:75", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/address-validation/index.js:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2aee1678cb4fe50", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/address-validation/index.js:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/address-validation/index.js:62"}, "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-3246ba9f935e17da", "name": "Commented-code block (5 lines) in server/services/scheduling/find-time.js:133", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/scheduling/find-time.js:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ebbea396f8082f81", "name": "Commented-code block (10 lines) in server/services/pdf/wdo-report-pdf.js:119", "shortDescription": {"text": "Commented-code block (10 lines) in server/services/pdf/wdo-report-pdf.js:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e20634f2b10de9b5", "name": "Commented-code block (9 lines) in server/services/customer-intelligence/health-scorer.js:105", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/customer-intelligence/health-scorer.js:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f479cb354310948", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/backlink-agent/x-poller.js:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/backlink-agent/x-poller.js:25"}, "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-6a5ca47814d08e27", "name": "Commented-code block (5 lines) in server/services/seo/link-prospect-outreach.js:111", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-outreach.js:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9b65b38dae11b2f", "name": "Commented-code block (5 lines) in server/services/seo/indexnow-submit.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/indexnow-submit.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce2ca9041e56192d", "name": "Commented-code block (6 lines) in server/services/seo/site-rollup.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in server/services/seo/site-rollup.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5594ee3b1924863f", "name": "Commented-code block (5 lines) in server/services/seo/link-prospect-verifier.js:119", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-verifier.js:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb460115f654f85a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/link-prospect-verifier.js:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/link-prospect-verifier.js:222"}, "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-8410eb64e737d705", "name": "Commented-code block (9 lines) in server/services/seo/gsc-opportunity-miner.js:101", "shortDescription": {"text": "Commented-code block (9 lines) in server/services/seo/gsc-opportunity-miner.js:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55583203734cfcfb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/backlink-strategy-agent.js:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/backlink-strategy-agent.js:63"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81d58beefed4e927", "name": "Commented-code block (5 lines) in server/services/seo/link-prospect-worker.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-worker.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfc5b37195dc18a0", "name": "Commented-code block (5 lines) in server/services/seo/llm-mention-prober.js:190", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/llm-mention-prober.js:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e6dce36a422eaf6", "name": "Commented-code block (8 lines) in server/services/seo/competitor-gap-miner.js:155", "shortDescription": {"text": "Commented-code block (8 lines) in server/services/seo/competitor-gap-miner.js:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1fefead7fb68e073", "name": "Commented-code block (5 lines) in server/services/seo/serp-profiler.js:26", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/serp-profiler.js:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a46cadb58f48e493", "name": "Commented-code block (5 lines) in server/services/seo/rankings-monitor.js:98", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/rankings-monitor.js:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d53c350a41e0c1b", "name": "Commented-code block (7 lines) in server/services/seo/dataforseo.js:145", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/seo/dataforseo.js:145"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21d31af6a6c757c3", "name": "Commented-code block (7 lines) in server/services/seo/conversion-feedback-miner.js:105", "shortDescription": {"text": "Commented-code block (7 lines) in server/services/seo/conversion-feedback-miner.js:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d614020f855b3b7", "name": "Commented-code block (5 lines) in server/services/seo/impact-tracker.js:444", "shortDescription": {"text": "Commented-code block (5 lines) in server/services/seo/impact-tracker.js:444"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5003e040cfda7e09", "name": "340 env vars used in code but missing from .env.example", "shortDescription": {"text": "340 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADAM_CELL`, `ADDRESS_VALIDATION_ENABLED`, `ADMIN_EMAIL_ALLOWLIST`, `ADMIN_PHONE`, `AEO_GAP_MIN_DAYS`, `AI_PROPERTY_MAX_SEARCHES`, `AI_PROPERTY_TIMEOUT_MS`, `AI_STORIES_MAX_SEARCHES` + 332 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a20844997635e700", "name": "Frontend route `/onboard/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/onboard/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e30c6fa69c578f7", "name": "Frontend route `/rate/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/rate/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a075160626cb0ff2", "name": "Frontend route `/report/project/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/report/project/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3384dd822f8380c9", "name": "Frontend route `/report/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/report/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd7a53e338618c44", "name": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaa38310fd067131", "name": "Frontend route `/receipt/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/receipt/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad685e9e5b2215c6", "name": "Frontend route `/contract/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/contract/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1934bf84ea70abb1", "name": "Frontend route `/track/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/track/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e161569846e0d554", "name": "Frontend route `/prep/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/prep/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4c5077ec9ad74d7c", "name": "Frontend route `/track-preview` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/track-preview` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d467619ec1bf956", "name": "Frontend route `/estimate/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/estimate/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a62f6273c2fd342", "name": "Frontend route `/lawn-care/what-is-included` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/lawn-care/what-is-included` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2a13cdde7c9bcb7", "name": "Frontend route `/service-outlines/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/service-outlines/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a7e2b7e099300e9", "name": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ba5f8353dcc8c98", "name": "Frontend route `/book` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/book` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23f3dfae79bdbbb6", "name": "Frontend route `/newsletter/archive/:id` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/newsletter/archive/:id` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d3f0c420e719a7d", "name": "Frontend route `/button-examples` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/button-examples` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5d8635fba29b7ca", "name": "Frontend route `/book/:estimateToken` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/book/:estimateToken` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a36cd0f1e1d12886", "name": "Frontend route `estimate` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `estimate` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac82cf918e4db530", "name": "Frontend route `protocols` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `protocols` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2ba655b0243196cd", "name": "Frontend route `customers` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `customers` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c18b17a219941ad0", "name": "Frontend route `pipeline` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a970542b8e76ed4", "name": "Frontend route `estimates` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `estimates` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-376b48947c4d0268", "name": "Frontend route `dispatch` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `dispatch` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce54dd27af70a7a6", "name": "Frontend route `schedule` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `schedule` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14f1acc15ad968d4", "name": "Frontend route `revenue` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `revenue` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a51aab157481ee5", "name": "Frontend route `communications` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `communications` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4e80d302e01cf6a", "name": "Frontend route `reviews` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `reviews` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88577523852eae7b", "name": "Frontend route `requests` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `requests` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3aa89a52ad28632f", "name": "Frontend route `ads` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `ads` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6424b2a7fae34f7d", "name": "Frontend route `ppc` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `ppc` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba6dbc2c3c0a25dc", "name": "Frontend route `seo` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `seo` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cefd113844441d5", "name": "Frontend route `content-engine` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `content-engine` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bad3218b476221d6", "name": "Frontend route `content-registry` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `content-registry` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a96c47ea07346f7", "name": "Frontend route `data-hygiene` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `data-hygiene` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4b72521233a335b", "name": "Frontend route `agents` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-533b2e91eca2434f", "name": "Frontend route `agent-decisions` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `agent-decisions` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f3b65a652f06732", "name": "Frontend route `blog` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `blog` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8dc02b39b2f3a8c", "name": "Frontend route `knowledge` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `knowledge` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b442479d16727a39", "name": "Frontend route `referrals` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `referrals` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf3a571a5cde8fd2", "name": "Frontend route `social-media` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `social-media` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f084a579e5f85a15", "name": "Frontend route `tax` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `tax` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b06d7d6cc11dc9cd", "name": "Frontend route `pricing` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `pricing` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-300b1517d0b1a91b", "name": "Frontend route `lawn-assessment` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `lawn-assessment` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b47919ce5f3d5381", "name": "Frontend route `lawn-protocol` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `lawn-protocol` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ca5fde8abf9049bc", "name": "Frontend route `turf-height` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `turf-height` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e1d135741ef42e4", "name": "Frontend route `equipment-calibration` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `equipment-calibration` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1da5b82f26d655a7", "name": "Frontend route `equipment` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `equipment` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e670cb24c2076c4", "name": "Frontend route `kb` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `kb` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fce8c3fad90ea40a", "name": "Frontend route `invoices` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `invoices` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bc1ea30e962d4c47", "name": "Frontend route `inventory` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `inventory` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fb5614785246b69", "name": "Frontend route `settings` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1bd7a3b223656741", "name": "Frontend route `settings/pest-pressure` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `settings/pest-pressure` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0c510b6ba3ff4ef", "name": "Frontend route `health` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `health` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c6c4191cedbe5f05", "name": "Frontend route `timetracking` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `timetracking` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7006061838cdfe11", "name": "Frontend route `leads` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `leads` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1cd96e968004f2a", "name": "Frontend route `fleet` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `fleet` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b0a39e3e4a032cb", "name": "Frontend route `service-library` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `service-library` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f2cdc769ee76bd87", "name": "Frontend route `projects` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `projects` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd5916c195142bdb", "name": "Frontend route `documents` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `documents` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cca8f1485640ba8f", "name": "Frontend route `document-requests` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `document-requests` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f2a2f9f42c276e6", "name": "Frontend route `discounts` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `discounts` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f97299244239983f", "name": "Frontend route `compliance` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `compliance` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48552bae8ac1eb69", "name": "Frontend route `credentials` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `credentials` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d278bc81331404d3", "name": "Frontend route `newsletter` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `newsletter` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a042a7ea2017ea45", "name": "Frontend route `call-recordings` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `call-recordings` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-961255478250f03a", "name": "Frontend route `phone-numbers` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `phone-numbers` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a7b1464c4396338", "name": "Frontend route `banking` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `banking` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6920456b40604874", "name": "Frontend route `pricing-logic` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `pricing-logic` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ff9fe2f78ba83b4e", "name": "Frontend route `pricing-reality-check` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `pricing-reality-check` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc122229c017738a", "name": "Frontend route `tool-health` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `tool-health` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-25dc4d8552eead0b", "name": "Frontend route `more` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `more` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58a700c8ff543587", "name": "Frontend route `_design-system` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `_design-system` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e48fe64a81a231b3", "name": "Frontend route `_design-system/flags` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `_design-system/flags` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-abfc64104117e48e", "name": "Frontend route `/*` has no Link/navigate to it \u2014 client/src/App.jsx", "shortDescription": {"text": "Frontend route `/*` has no Link/navigate to it \u2014 client/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-235052e8faeeff03", "name": "Dangling fetch: POST /auth/send-code (client/src/utils/api.js:119)", "shortDescription": {"text": "Dangling fetch: POST /auth/send-code (client/src/utils/api.js:119)"}, "fullDescription": {"text": "`client/src/utils/api.js:119` calls `POST /auth/send-code` 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/send-code`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d85bee05b80d684e", "name": "Dangling fetch: POST /auth/verify-code (client/src/utils/api.js:126)", "shortDescription": {"text": "Dangling fetch: POST /auth/verify-code (client/src/utils/api.js:126)"}, "fullDescription": {"text": "`client/src/utils/api.js:126` calls `POST /auth/verify-code` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/verify-code`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3258a00957027797", "name": "Dangling fetch: GET /auth/me (client/src/utils/api.js:133)", "shortDescription": {"text": "Dangling fetch: GET /auth/me (client/src/utils/api.js:133)"}, "fullDescription": {"text": "`client/src/utils/api.js:133` calls `GET /auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-457e5b1aa2f7e5a2", "name": "Dangling fetch: GET /auth/properties (client/src/utils/api.js:137)", "shortDescription": {"text": "Dangling fetch: GET /auth/properties (client/src/utils/api.js:137)"}, "fullDescription": {"text": "`client/src/utils/api.js:137` calls `GET /auth/properties` 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/properties`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-044cf94690e0bf37", "name": "Dangling fetch: POST /auth/select-property (client/src/utils/api.js:141)", "shortDescription": {"text": "Dangling fetch: POST /auth/select-property (client/src/utils/api.js:141)"}, "fullDescription": {"text": "`client/src/utils/api.js:141` calls `POST /auth/select-property` 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/select-property`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-12fb32878b344e7d", "name": "Dangling fetch: GET /services?${query} (client/src/utils/api.js:150)", "shortDescription": {"text": "Dangling fetch: GET /services?${query} (client/src/utils/api.js:150)"}, "fullDescription": {"text": "`client/src/utils/api.js:150` calls `GET /services?${query}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/services`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2863f2f35aba1d49", "name": "Dangling fetch: GET /services/${id} (client/src/utils/api.js:154)", "shortDescription": {"text": "Dangling fetch: GET /services/${id} (client/src/utils/api.js:154)"}, "fullDescription": {"text": "`client/src/utils/api.js:154` calls `GET /services/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/services/<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-baaf163792c3b038", "name": "Dangling fetch: GET /services/stats/summary (client/src/utils/api.js:158)", "shortDescription": {"text": "Dangling fetch: GET /services/stats/summary (client/src/utils/api.js:158)"}, "fullDescription": {"text": "`client/src/utils/api.js:158` calls `GET /services/stats/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/services/stats/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d83ac58076f97bca", "name": "Dangling fetch: GET /schedule?days=${days} (client/src/utils/api.js:163)", "shortDescription": {"text": "Dangling fetch: GET /schedule?days=${days} (client/src/utils/api.js:163)"}, "fullDescription": {"text": "`client/src/utils/api.js:163` calls `GET /schedule?days=${days}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedule`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fdde3042fd90b851", "name": "Dangling fetch: GET /schedule/next (client/src/utils/api.js:167)", "shortDescription": {"text": "Dangling fetch: GET /schedule/next (client/src/utils/api.js:167)"}, "fullDescription": {"text": "`client/src/utils/api.js:167` calls `GET /schedule/next` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedule/next`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b281e93be6738e22", "name": "Dangling fetch: POST /schedule/${id}/confirm (client/src/utils/api.js:171)", "shortDescription": {"text": "Dangling fetch: POST /schedule/${id}/confirm (client/src/utils/api.js:171)"}, "fullDescription": {"text": "`client/src/utils/api.js:171` calls `POST /schedule/${id}/confirm` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedule/<p>/confirm`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48c1bba669306b81", "name": "Dangling fetch: POST /schedule/${id}/reschedule (client/src/utils/api.js:175)", "shortDescription": {"text": "Dangling fetch: POST /schedule/${id}/reschedule (client/src/utils/api.js:175)"}, "fullDescription": {"text": "`client/src/utils/api.js:175` calls `POST /schedule/${id}/reschedule` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/schedule/<p>/reschedule`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-939cd6c3a4d4c2a2", "name": "Dangling fetch: GET /billing?limit=${limit} (client/src/utils/api.js:183)", "shortDescription": {"text": "Dangling fetch: GET /billing?limit=${limit} (client/src/utils/api.js:183)"}, "fullDescription": {"text": "`client/src/utils/api.js:183` calls `GET /billing?limit=${limit}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9689528a9ea1076", "name": "Dangling fetch: GET /billing/balance (client/src/utils/api.js:187)", "shortDescription": {"text": "Dangling fetch: GET /billing/balance (client/src/utils/api.js:187)"}, "fullDescription": {"text": "`client/src/utils/api.js:187` calls `GET /billing/balance` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/balance`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1c0c235f7447e65e", "name": "Dangling fetch: GET /billing/cards (client/src/utils/api.js:191)", "shortDescription": {"text": "Dangling fetch: GET /billing/cards (client/src/utils/api.js:191)"}, "fullDescription": {"text": "`client/src/utils/api.js:191` calls `GET /billing/cards` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/cards`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1b047633b496a67b", "name": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:195)", "shortDescription": {"text": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:195)"}, "fullDescription": {"text": "`client/src/utils/api.js:195` calls `POST /billing/cards` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/cards`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4429c2d1624f4867", "name": "Dangling fetch: GET /billing/processor (client/src/utils/api.js:202)", "shortDescription": {"text": "Dangling fetch: GET /billing/processor (client/src/utils/api.js:202)"}, "fullDescription": {"text": "`client/src/utils/api.js:202` calls `GET /billing/processor` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/processor`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17461c85df83f824", "name": "Dangling fetch: POST /billing/cards/setup-intent (client/src/utils/api.js:206)", "shortDescription": {"text": "Dangling fetch: POST /billing/cards/setup-intent (client/src/utils/api.js:206)"}, "fullDescription": {"text": "`client/src/utils/api.js:206` calls `POST /billing/cards/setup-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: `/billing/cards/setup-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-245fcfe3d6e0966e", "name": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:213)", "shortDescription": {"text": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:213)"}, "fullDescription": {"text": "`client/src/utils/api.js:213` calls `POST /billing/cards` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/cards`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a17da5f3450815b5", "name": "Dangling fetch: DELETE /billing/cards/${cardId} (client/src/utils/api.js:220)", "shortDescription": {"text": "Dangling fetch: DELETE /billing/cards/${cardId} (client/src/utils/api.js:220)"}, "fullDescription": {"text": "`client/src/utils/api.js:220` calls `DELETE /billing/cards/${cardId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/cards/<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-03cdfaef8fc69d2a", "name": "Dangling fetch: PUT /billing/cards/${cardId}/default (client/src/utils/api.js:224)", "shortDescription": {"text": "Dangling fetch: PUT /billing/cards/${cardId}/default (client/src/utils/api.js:224)"}, "fullDescription": {"text": "`client/src/utils/api.js:224` calls `PUT /billing/cards/${cardId}/default` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/cards/<p>/default`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e85c6e582322614a", "name": "Dangling fetch: GET /billing/autopay (client/src/utils/api.js:229)", "shortDescription": {"text": "Dangling fetch: GET /billing/autopay (client/src/utils/api.js:229)"}, "fullDescription": {"text": "`client/src/utils/api.js:229` calls `GET /billing/autopay` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/autopay`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eba96f2f6728efcc", "name": "Dangling fetch: PUT /billing/autopay (client/src/utils/api.js:233)", "shortDescription": {"text": "Dangling fetch: PUT /billing/autopay (client/src/utils/api.js:233)"}, "fullDescription": {"text": "`client/src/utils/api.js:233` calls `PUT /billing/autopay` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/autopay`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6951b5937df9a20f", "name": "Dangling fetch: POST /billing/autopay/pause (client/src/utils/api.js:240)", "shortDescription": {"text": "Dangling fetch: POST /billing/autopay/pause (client/src/utils/api.js:240)"}, "fullDescription": {"text": "`client/src/utils/api.js:240` calls `POST /billing/autopay/pause` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/autopay/pause`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0aba411a569c3849", "name": "Dangling fetch: POST /billing/autopay/resume (client/src/utils/api.js:247)", "shortDescription": {"text": "Dangling fetch: POST /billing/autopay/resume (client/src/utils/api.js:247)"}, "fullDescription": {"text": "`client/src/utils/api.js:247` calls `POST /billing/autopay/resume` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/billing/autopay/resume`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f481643552b0905e", "name": "Dangling fetch: GET /notifications/preferences (client/src/utils/api.js:252)", "shortDescription": {"text": "Dangling fetch: GET /notifications/preferences (client/src/utils/api.js:252)"}, "fullDescription": {"text": "`client/src/utils/api.js:252` calls `GET /notifications/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: `/notifications/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-8fb7883a5f7d2b8c", "name": "Dangling fetch: PUT /notifications/preferences (client/src/utils/api.js:256)", "shortDescription": {"text": "Dangling fetch: PUT /notifications/preferences (client/src/utils/api.js:256)"}, "fullDescription": {"text": "`client/src/utils/api.js:256` calls `PUT /notifications/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: `/notifications/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-6b742c6d65e0c8fd", "name": "Dangling fetch: GET /notifications/property-preferences (client/src/utils/api.js:263)", "shortDescription": {"text": "Dangling fetch: GET /notifications/property-preferences (client/src/utils/api.js:263)"}, "fullDescription": {"text": "`client/src/utils/api.js:263` calls `GET /notifications/property-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: `/notifications/property-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-ce41a12171796300", "name": "Dangling fetch: PUT /notifications/property-preferences/${customerId} (client/src/utils/api.js:267)", "shortDescription": {"text": "Dangling fetch: PUT /notifications/property-preferences/${customerId} (client/src/utils/api.js:267)"}, "fullDescription": {"text": "`client/src/utils/api.js:267` calls `PUT /notifications/property-preferences/${customerId}` 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/property-preferences/<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-4613efcb55552a8a", "name": "Dangling fetch: POST /customer-pricing/query (client/src/utils/api.js:286)", "shortDescription": {"text": "Dangling fetch: POST /customer-pricing/query (client/src/utils/api.js:286)"}, "fullDescription": {"text": "`client/src/utils/api.js:286` calls `POST /customer-pricing/query` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/customer-pricing/query`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36d949660d72cab8", "name": "Dangling fetch: GET /lawn-health/${customerId} (client/src/utils/api.js:294)", "shortDescription": {"text": "Dangling fetch: GET /lawn-health/${customerId} (client/src/utils/api.js:294)"}, "fullDescription": {"text": "`client/src/utils/api.js:294` calls `GET /lawn-health/${customerId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/lawn-health/<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-00636014f8792bf2", "name": "Dangling fetch: GET /lawn-health/${customerId}/history (client/src/utils/api.js:298)", "shortDescription": {"text": "Dangling fetch: GET /lawn-health/${customerId}/history (client/src/utils/api.js:298)"}, "fullDescription": {"text": "`client/src/utils/api.js:298` calls `GET /lawn-health/${customerId}/history` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/lawn-health/<p>/history`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e101fe969b1592d9", "name": "Dangling fetch: GET /lawn-health/${customerId}/photos/${assessmentId} (client/src/utils/api.js:302)", "shortDescription": {"text": "Dangling fetch: GET /lawn-health/${customerId}/photos/${assessmentId} (client/src/utils/api.js:302)"}, "fullDescription": {"text": "`client/src/utils/api.js:302` calls `GET /lawn-health/${customerId}/photos/${assessmentId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/lawn-health/<p>/photos/<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-e99d2e5d620a732b", "name": "Dangling fetch: POST /lawn-health/${customerId}/recommendation-events (client/src/utils/api.js:306)", "shortDescription": {"text": "Dangling fetch: POST /lawn-health/${customerId}/recommendation-events (client/src/utils/api.js:306)"}, "fullDescription": {"text": "`client/src/utils/api.js:306` calls `POST /lawn-health/${customerId}/recommendation-events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/lawn-health/<p>/recommendation-events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20d491eb2b013fa0", "name": "Dangling fetch: GET /feed/blog (client/src/utils/api.js:314)", "shortDescription": {"text": "Dangling fetch: GET /feed/blog (client/src/utils/api.js:314)"}, "fullDescription": {"text": "`client/src/utils/api.js:314` calls `GET /feed/blog` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/blog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ebd2275d9897163d", "name": "Dangling fetch: GET /feed/newsletter (client/src/utils/api.js:318)", "shortDescription": {"text": "Dangling fetch: GET /feed/newsletter (client/src/utils/api.js:318)"}, "fullDescription": {"text": "`client/src/utils/api.js:318` calls `GET /feed/newsletter` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/newsletter`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37699d72586d1180", "name": "Dangling fetch: GET /feed/weather (client/src/utils/api.js:322)", "shortDescription": {"text": "Dangling fetch: GET /feed/weather (client/src/utils/api.js:322)"}, "fullDescription": {"text": "`client/src/utils/api.js:322` calls `GET /feed/weather` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/weather`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a41eecde4d7ba620", "name": "Dangling fetch: GET /feed/alerts (client/src/utils/api.js:326)", "shortDescription": {"text": "Dangling fetch: GET /feed/alerts (client/src/utils/api.js:326)"}, "fullDescription": {"text": "`client/src/utils/api.js:326` calls `GET /feed/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: `/feed/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-6f9688e2d64cf1d0", "name": "Dangling fetch: GET /feed/experts (client/src/utils/api.js:330)", "shortDescription": {"text": "Dangling fetch: GET /feed/experts (client/src/utils/api.js:330)"}, "fullDescription": {"text": "`client/src/utils/api.js:330` calls `GET /feed/experts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/experts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a184b9d95533a90c", "name": "Dangling fetch: GET /feed/local (client/src/utils/api.js:334)", "shortDescription": {"text": "Dangling fetch: GET /feed/local (client/src/utils/api.js:334)"}, "fullDescription": {"text": "`client/src/utils/api.js:334` calls `GET /feed/local` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/local`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d55d726ad6d015af", "name": "Dangling fetch: GET /feed/faq (client/src/utils/api.js:338)", "shortDescription": {"text": "Dangling fetch: GET /feed/faq (client/src/utils/api.js:338)"}, "fullDescription": {"text": "`client/src/utils/api.js:338` calls `GET /feed/faq` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/faq`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3735d8f304ef0908", "name": "Dangling fetch: GET /feed/monthly-tip (client/src/utils/api.js:342)", "shortDescription": {"text": "Dangling fetch: GET /feed/monthly-tip (client/src/utils/api.js:342)"}, "fullDescription": {"text": "`client/src/utils/api.js:342` calls `GET /feed/monthly-tip` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/feed/monthly-tip`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3684cb31c275fe65", "name": "Dangling fetch: GET /satisfaction/pending (client/src/utils/api.js:347)", "shortDescription": {"text": "Dangling fetch: GET /satisfaction/pending (client/src/utils/api.js:347)"}, "fullDescription": {"text": "`client/src/utils/api.js:347` calls `GET /satisfaction/pending` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/satisfaction/pending`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50564eb8fb412485", "name": "Dangling fetch: POST /satisfaction (client/src/utils/api.js:351)", "shortDescription": {"text": "Dangling fetch: POST /satisfaction (client/src/utils/api.js:351)"}, "fullDescription": {"text": "`client/src/utils/api.js:351` calls `POST /satisfaction` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/satisfaction`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e2110c8509df5cf", "name": "Dangling fetch: GET /property/preferences (client/src/utils/api.js:359)", "shortDescription": {"text": "Dangling fetch: GET /property/preferences (client/src/utils/api.js:359)"}, "fullDescription": {"text": "`client/src/utils/api.js:359` calls `GET /property/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: `/property/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-7e47846e06a95f05", "name": "Dangling fetch: PUT /property/preferences (client/src/utils/api.js:363)", "shortDescription": {"text": "Dangling fetch: PUT /property/preferences (client/src/utils/api.js:363)"}, "fullDescription": {"text": "`client/src/utils/api.js:363` calls `PUT /property/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: `/property/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-5f8f6699162cee6f", "name": "Dangling fetch: GET /service-preferences (client/src/utils/api.js:371)", "shortDescription": {"text": "Dangling fetch: GET /service-preferences (client/src/utils/api.js:371)"}, "fullDescription": {"text": "`client/src/utils/api.js:371` calls `GET /service-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: `/service-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-ee9040e840ad1920", "name": "Dangling fetch: PUT /service-preferences (client/src/utils/api.js:375)", "shortDescription": {"text": "Dangling fetch: PUT /service-preferences (client/src/utils/api.js:375)"}, "fullDescription": {"text": "`client/src/utils/api.js:375` calls `PUT /service-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: `/service-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-acaf17bf5d06023e", "name": "Dangling fetch: GET /referrals (client/src/utils/api.js:383)", "shortDescription": {"text": "Dangling fetch: GET /referrals (client/src/utils/api.js:383)"}, "fullDescription": {"text": "`client/src/utils/api.js:383` calls `GET /referrals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/referrals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cf953acced6a4e51", "name": "Dangling fetch: GET /referrals/stats (client/src/utils/api.js:387)", "shortDescription": {"text": "Dangling fetch: GET /referrals/stats (client/src/utils/api.js:387)"}, "fullDescription": {"text": "`client/src/utils/api.js:387` calls `GET /referrals/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: `/referrals/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-d9107b6466b780e5", "name": "Dangling fetch: POST /referrals (client/src/utils/api.js:391)", "shortDescription": {"text": "Dangling fetch: POST /referrals (client/src/utils/api.js:391)"}, "fullDescription": {"text": "`client/src/utils/api.js:391` calls `POST /referrals` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/referrals`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-baa4068b601c13e4", "name": "Dangling fetch: GET /promotions/relevant (client/src/utils/api.js:399)", "shortDescription": {"text": "Dangling fetch: GET /promotions/relevant (client/src/utils/api.js:399)"}, "fullDescription": {"text": "`client/src/utils/api.js:399` calls `GET /promotions/relevant` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/promotions/relevant`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75fc657d714e5ad7", "name": "Dangling fetch: POST /promotions/${promoId}/interest (client/src/utils/api.js:403)", "shortDescription": {"text": "Dangling fetch: POST /promotions/${promoId}/interest (client/src/utils/api.js:403)"}, "fullDescription": {"text": "`client/src/utils/api.js:403` calls `POST /promotions/${promoId}/interest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/promotions/<p>/interest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-50e57c817d916889", "name": "Dangling fetch: POST /promotions/${promoId}/dismiss (client/src/utils/api.js:410)", "shortDescription": {"text": "Dangling fetch: POST /promotions/${promoId}/dismiss (client/src/utils/api.js:410)"}, "fullDescription": {"text": "`client/src/utils/api.js:410` calls `POST /promotions/${promoId}/dismiss` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/promotions/<p>/dismiss`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fec95c0d86fd44aa", "name": "Dangling fetch: POST /documents/share/${docId} (client/src/utils/api.js:423)", "shortDescription": {"text": "Dangling fetch: POST /documents/share/${docId} (client/src/utils/api.js:423)"}, "fullDescription": {"text": "`client/src/utils/api.js:423` calls `POST /documents/share/${docId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/documents/share/<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-ae63254c5ee83bc8", "name": "Dangling fetch: GET /badges (client/src/utils/api.js:428)", "shortDescription": {"text": "Dangling fetch: GET /badges (client/src/utils/api.js:428)"}, "fullDescription": {"text": "`client/src/utils/api.js:428` calls `GET /badges` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/badges`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc661d5c04305e46", "name": "Dangling fetch: POST /badges/${badgeType}/notify (client/src/utils/api.js:432)", "shortDescription": {"text": "Dangling fetch: POST /badges/${badgeType}/notify (client/src/utils/api.js:432)"}, "fullDescription": {"text": "`client/src/utils/api.js:432` calls `POST /badges/${badgeType}/notify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/badges/<p>/notify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8d580e55bf2e175e", "name": "Dangling fetch: GET /tracking/active (client/src/utils/api.js:437)", "shortDescription": {"text": "Dangling fetch: GET /tracking/active (client/src/utils/api.js:437)"}, "fullDescription": {"text": "`client/src/utils/api.js:437` calls `GET /tracking/active` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tracking/active`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b7a7f0196540e87", "name": "Dangling fetch: GET /tracking/today (client/src/utils/api.js:441)", "shortDescription": {"text": "Dangling fetch: GET /tracking/today (client/src/utils/api.js:441)"}, "fullDescription": {"text": "`client/src/utils/api.js:441` calls `GET /tracking/today` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tracking/today`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-183433c3d8758326", "name": "Dangling fetch: GET /bouncie/vehicles (client/src/utils/api.js:446)", "shortDescription": {"text": "Dangling fetch: GET /bouncie/vehicles (client/src/utils/api.js:446)"}, "fullDescription": {"text": "`client/src/utils/api.js:446` calls `GET /bouncie/vehicles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/bouncie/vehicles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6aae115484122732", "name": "Dangling fetch: GET /api/dispatch/insights?days=${d} (client/src/components/dispatch/InsightsPanelV2.jsx:24)", "shortDescription": {"text": "Dangling fetch: GET /api/dispatch/insights?days=${d} (client/src/components/dispatch/InsightsPanelV2.jsx:24)"}, "fullDescription": {"text": "`client/src/components/dispatch/InsightsPanelV2.jsx:24` calls `GET /api/dispatch/insights?days=${d}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dispatch/insights`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-526c43e8d5beae30", "name": "Dangling fetch: GET /api/dispatch/jobs?date=${date}&status=scheduled (client/src/components/dispatch/RevenuePanelV2.jsx:", "shortDescription": {"text": "Dangling fetch: GET /api/dispatch/jobs?date=${date}&status=scheduled (client/src/components/dispatch/RevenuePanelV2.jsx:27)"}, "fullDescription": {"text": "`client/src/components/dispatch/RevenuePanelV2.jsx:27` calls `GET /api/dispatch/jobs?date=${date}&status=scheduled` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dispatch/jobs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54d72949b4e8ac25", "name": "Dangling fetch: POST /api/dispatch/csr/slots (client/src/components/dispatch/CSRPanelV2.jsx:33)", "shortDescription": {"text": "Dangling fetch: POST /api/dispatch/csr/slots (client/src/components/dispatch/CSRPanelV2.jsx:33)"}, "fullDescription": {"text": "`client/src/components/dispatch/CSRPanelV2.jsx:33` calls `POST /api/dispatch/csr/slots` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dispatch/csr/slots`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b1fafad4d698606d", "name": "Dangling fetch: POST /api/dispatch/match/simulate (client/src/components/dispatch/TechMatchPanelV2.jsx:41)", "shortDescription": {"text": "Dangling fetch: POST /api/dispatch/match/simulate (client/src/components/dispatch/TechMatchPanelV2.jsx:41)"}, "fullDescription": {"text": "`client/src/components/dispatch/TechMatchPanelV2.jsx:41` calls `POST /api/dispatch/match/simulate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/dispatch/match/simulate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc00c7c88cba6297", "name": "Dangling fetch: GET /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:29)", "shortDescription": {"text": "Dangling fetch: GET /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:29)"}, "fullDescription": {"text": "`client/src/components/portal/NotificationPreferences.jsx:29` calls `GET /api/notification-prefs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notification-prefs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42a7d6fb73926c29", "name": "Dangling fetch: PUT /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:45)", "shortDescription": {"text": "Dangling fetch: PUT /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:45)"}, "fullDescription": {"text": "`client/src/components/portal/NotificationPreferences.jsx:45` calls `PUT /api/notification-prefs` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/notification-prefs`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61ff489f24fd024a", "name": "Dangling fetch: GET /tracking/maps-key (client/src/pages/PortalPage.jsx:7454)", "shortDescription": {"text": "Dangling fetch: GET /tracking/maps-key (client/src/pages/PortalPage.jsx:7454)"}, "fullDescription": {"text": "`client/src/pages/PortalPage.jsx:7454` calls `GET /tracking/maps-key` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/tracking/maps-key`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-61510528dab11786", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimatePage.js", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimatePage.jsx:1032)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1032` calls `GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e44718ea0566be2b", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimatePage.jsx:1116)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimatePage.jsx:1116)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1116` calls `GET /api/admin/customers?search=${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60071cd8eebb8921", "name": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimatePage.jsx:1246)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimatePage.jsx:1246)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1246` calls `POST /api/admin/estimator/property-lookup` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimator/property-lookup`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-afaedc7de9a2ecb9", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/Estima", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/EstimatePage.jsx:1307)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1307` calls `GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c89a62bb4e3989e3", "name": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimatePage.jsx:1426)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimatePage.jsx:1426)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1426` calls `POST /api/admin/lookup/satellite-ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/lookup/satellite-ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-667fe2337f6d3299", "name": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimatePage.jsx:1789)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimatePage.jsx:1789)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1789` calls `POST /api/admin/estimator/calculate-estimate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimator/calculate-estimate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-478f08659e0f7fbb", "name": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimatePage.jsx:1981)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimatePage.jsx:1981)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:1981` calls `POST /api/admin/estimates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-147711a758368f42", "name": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimatePage.jsx:2042)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimatePage.jsx:2042)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:2042` calls `POST /api/admin/estimates/${useId}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimates/<p>/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-92fdee3b4422a87b", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimatePa", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimatePage.jsx:3835)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimatePage.jsx:3835` calls `GET /api/admin/customers?search=${encodeURIComponent(digits)}&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: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73f59b910204e983", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimateToolVie", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimateToolViewV2.jsx:2347)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2347` calls `GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-faa99c11e65c3915", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimateToolViewV2.jsx:", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimateToolViewV2.jsx:2384)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2384` calls `GET /api/admin/customers?search=${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8c94bc9fad6e051", "name": "Dangling fetch: POST /api/admin/estimator/property-lookup/verify (client/src/pages/admin/EstimateToolViewV2.jsx:2427)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup/verify (client/src/pages/admin/EstimateToolViewV2.jsx:2427)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2427` calls `POST /api/admin/estimator/property-lookup/verify` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimator/property-lookup/verify`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1de117bc0adc065", "name": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimateToolViewV2.jsx:2648)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimateToolViewV2.jsx:2648)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2648` calls `POST /api/admin/estimator/property-lookup` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimator/property-lookup`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65d22c914c969b53", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/Estima", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/EstimateToolViewV2.jsx:2718)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2718` calls `GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c6ae9b473b184b0", "name": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimateToolViewV2.jsx:2832)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimateToolViewV2.jsx:2832)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:2832` calls `POST /api/admin/lookup/satellite-ai` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/lookup/satellite-ai`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a267c135c38e56a", "name": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimateToolViewV2.jsx:3253)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimateToolViewV2.jsx:3253)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:3253` calls `POST /api/admin/estimator/calculate-estimate` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimator/calculate-estimate`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-10804e9030b0f828", "name": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimateToolViewV2.jsx:3400)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimateToolViewV2.jsx:3400)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:3400` calls `POST /api/admin/estimates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe3930c3a68438c7", "name": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimateToolViewV2.jsx:3490)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimateToolViewV2.jsx:3490)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:3490` calls `POST /api/admin/estimates/${useId}/send` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/estimates/<p>/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-116b5821567bbc6e", "name": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimateTo", "shortDescription": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimateToolViewV2.jsx:5932)"}, "fullDescription": {"text": "`client/src/pages/admin/EstimateToolViewV2.jsx:5932` calls `GET /api/admin/customers?search=${encodeURIComponent(digits)}&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: `/admin/customers`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e433113a55afe7a2", "name": "Dangling fetch: GET /api${path} (client/src/pages/admin/ProtocolReferenceTabV2.jsx:36)", "shortDescription": {"text": "Dangling fetch: GET /api${path} (client/src/pages/admin/ProtocolReferenceTabV2.jsx:36)"}, "fullDescription": {"text": "`client/src/pages/admin/ProtocolReferenceTabV2.jsx:36` calls `GET /api${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/api/<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-95f25d5aa3166a95", "name": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-content-agent.js:24)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-content-agent.js:24)"}, "fullDescription": {"text": "`scripts/create-content-agent.js:24` calls `POST https://api.anthropic.com/v1/agents` 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.anthropic.com/v1/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2937ed603a7b4f20", "name": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-retention-agent.js:8)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-retention-agent.js:8)"}, "fullDescription": {"text": "`scripts/create-retention-agent.js:8` calls `POST https://api.anthropic.com/v1/agents` 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.anthropic.com/v1/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ffb483f6bc3f26c", "name": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-managed-agent.js:24)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-managed-agent.js:24)"}, "fullDescription": {"text": "`scripts/create-managed-agent.js:24` calls `POST https://api.anthropic.com/v1/agents` 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.anthropic.com/v1/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78136a3f65ece0d5", "name": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-bi-agent.js:8)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-bi-agent.js:8)"}, "fullDescription": {"text": "`scripts/create-bi-agent.js:8` calls `POST https://api.anthropic.com/v1/agents` 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.anthropic.com/v1/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2534ba6a0e0d8513", "name": "Dangling fetch: GET https://api.anthropic.com/v1${path} (scripts/create-backlink-strategy-agent.js:26)", "shortDescription": {"text": "Dangling fetch: GET https://api.anthropic.com/v1${path} (scripts/create-backlink-strategy-agent.js:26)"}, "fullDescription": {"text": "`scripts/create-backlink-strategy-agent.js:26` calls `GET https://api.anthropic.com/v1${path}` 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.anthropic.com/v1/<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-550d0adfe34799d9", "name": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-lead-response-agent.js:20)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-lead-response-agent.js:20)"}, "fullDescription": {"text": "`scripts/create-lead-response-agent.js:20` calls `POST https://api.anthropic.com/v1/agents` 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.anthropic.com/v1/agents`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18b6e859936f49e1", "name": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?place_id=${loc.googlePlaceId}&fields=${field", "shortDescription": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?place_id=${loc.googlePlaceId}&fields=${fields}&key=${GOOGLE_KEY} (server/routes/admin-reviews.js:713)"}, "fullDescription": {"text": "`server/routes/admin-reviews.js:713` calls `GET https://maps.googleapis.com/maps/api/place/details/json?place_id=${loc.googlePlaceId}&fields=${fields}&key=${GOOGLE_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/maps.googleapis.com/maps/api/place/details/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-374a7fb6b1b1d91f", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_VISION_MODEL}:generateContent?key=", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_VISION_MODEL}:generateContent?key=${apiKey} (server/routes/property-lookup-v2.js:2724)"}, "fullDescription": {"text": "`server/routes/property-lookup-v2.js:2724` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_VISION_MODEL}:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<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-72d26ed944728a27", "name": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_s", "shortDescription": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,precipitation_probability&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone=America/New_York (server/rou"}, "fullDescription": {"text": "`server/routes/admin-schedule.js:1254` calls `GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,precipitation_probability&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone=America/New_York` 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.open-meteo.com/v1/forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-505c1cf687269f60", "name": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js", "shortDescription": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js:666)"}, "fullDescription": {"text": "`server/routes/admin-content-v2.js:666` calls `GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fawn.ifas.ufl.edu/controller.php/lastobservation/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a958e7c5d3cb0e0", "name": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js", "shortDescription": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js:716)"}, "fullDescription": {"text": "`server/routes/admin-content-v2.js:716` calls `GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fawn.ifas.ufl.edu/controller.php/lastobservation/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2255d42ded951e46", "name": "Dangling fetch: GET https://docs.google.com/spreadsheets/d/1GbZ8KGMdJr8_DsRsW5qsshZSJaiKivg8ZR9Fz09lnb0/gviz/tq?tqx=out:", "shortDescription": {"text": "Dangling fetch: GET https://docs.google.com/spreadsheets/d/1GbZ8KGMdJr8_DsRsW5qsshZSJaiKivg8ZR9Fz09lnb0/gviz/tq?tqx=out:csv&gid=24910236 (server/routes/admin-import-sheets.js:214)"}, "fullDescription": {"text": "`server/routes/admin-import-sheets.js:214` calls `GET https://docs.google.com/spreadsheets/d/1GbZ8KGMdJr8_DsRsW5qsshZSJaiKivg8ZR9Fz09lnb0/gviz/tq?tqx=out:csv&gid=24910236` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/docs.google.com/spreadsheets/d/1gbz8kgmdjr8_dsrsw5qsshzsjaikivg8zr9fz09lnb0/gviz/tq`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95d7145eeaf9abe8", "name": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/routes/feed.js:362)", "shortDescription": {"text": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/routes/feed.js:362)"}, "fullDescription": {"text": "`server/routes/feed.js:362` calls `GET https://api.weather.gov/points/27.4217,-82.4065` 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.weather.gov/points/27.4217,-82.4065`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7d2cddd7d85a0e3", "name": "Dangling fetch: GET /api/reviews/featured?limit=8 (server/routes/estimate-public.js:5281)", "shortDescription": {"text": "Dangling fetch: GET /api/reviews/featured?limit=8 (server/routes/estimate-public.js:5281)"}, "fullDescription": {"text": "`server/routes/estimate-public.js:5281` calls `GET /api/reviews/featured?limit=8` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/reviews/featured`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-982b20a4223524ea", "name": "Dangling fetch: GET https://graph.facebook.com/v25.0/me?access_token=${token} (server/services/knowledge-base.js:309)", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0/me?access_token=${token} (server/services/knowledge-base.js:309)"}, "fullDescription": {"text": "`server/services/knowledge-base.js:309` calls `GET https://graph.facebook.com/v25.0/me?access_token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02d7d37b2dc3ea0a", "name": "Dangling fetch: GET https://graph.facebook.com/v25.0/debug_token?input_token=${token}&access_token=${token} (server/serv", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0/debug_token?input_token=${token}&access_token=${token} (server/services/knowledge-base.js:312)"}, "fullDescription": {"text": "`server/services/knowledge-base.js:312` calls `GET https://graph.facebook.com/v25.0/debug_token?input_token=${token}&access_token=${token}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/debug_token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5cdb3bc568adba0a", "name": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/knowledge-base.js:335)", "shortDescription": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/knowledge-base.js:335)"}, "fullDescription": {"text": "`server/services/knowledge-base.js:335` calls `GET https://api.linkedin.com/v2/me` 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.linkedin.com/v2/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe4cbad95c347c74", "name": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/services/forecast-analyzer.js:23)", "shortDescription": {"text": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/services/forecast-analyzer.js:23)"}, "fullDescription": {"text": "`server/services/forecast-analyzer.js:23` calls `GET https://api.weather.gov/points/27.4217,-82.4065` 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.weather.gov/points/27.4217,-82.4065`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-715d00bbfa0d48fd", "name": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/photos (server/services/social-media.js:696)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/photos (server/services/social-media.js:696)"}, "fullDescription": {"text": "`server/services/social-media.js:696` calls `POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/photos` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/<p>/photos`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84318d17419a5134", "name": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/feed (server/services/social-media.js:714)", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/feed (server/services/social-media.js:714)"}, "fullDescription": {"text": "`server/services/social-media.js:714` calls `POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/feed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/<p>/feed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5796bba3452c75f1", "name": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media (server/services/social-media.js:768", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media (server/services/social-media.js:768)"}, "fullDescription": {"text": "`server/services/social-media.js:768` calls `POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/<p>/media`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ae411c5f5d23bd76", "name": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media_publish (server/services/social-medi", "shortDescription": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media_publish (server/services/social-media.js:787)"}, "fullDescription": {"text": "`server/services/social-media.js:787` calls `POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media_publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/<p>/media_publish`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a00c762c99225007", "name": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (server/services/social-media.js:826)", "shortDescription": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (server/services/social-media.js:826)"}, "fullDescription": {"text": "`server/services/social-media.js:826` calls `POST https://api.linkedin.com/v2/ugcPosts` 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.linkedin.com/v2/ugcposts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3db02f3211dc6fc", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_TRANSCRIPTION_MODEL}:generateConte", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_TRANSCRIPTION_MODEL}:generateContent?key=${apiKey} (server/services/call-recording-processor.js:997)"}, "fullDescription": {"text": "`server/services/call-recording-processor.js:997` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_TRANSCRIPTION_MODEL}:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<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-c461a9f1e25580a1", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${proc", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/call-recording-processor.js:1204)"}, "fullDescription": {"text": "`server/services/call-recording-processor.js:1204` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash/<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-b7e3e42f72725e69", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_EXTRACTION_MODEL}:generateContent?", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_EXTRACTION_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/call-recording-processor.js:1264)"}, "fullDescription": {"text": "`server/services/call-recording-processor.js:1264` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_EXTRACTION_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<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-2015400f4afd5451", "name": "Dangling fetch: GET https://www.youtube.com/${handle} (server/services/social-feed.js:177)", "shortDescription": {"text": "Dangling fetch: GET https://www.youtube.com/${handle} (server/services/social-feed.js:177)"}, "fullDescription": {"text": "`server/services/social-feed.js:177` calls `GET https://www.youtube.com/${handle}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.youtube.com/<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-934a841210fef4c5", "name": "Dangling fetch: GET https://www.youtube.com/feeds/videos.xml?channel_id=${channelId} (server/services/social-feed.js:215", "shortDescription": {"text": "Dangling fetch: GET https://www.youtube.com/feeds/videos.xml?channel_id=${channelId} (server/services/social-feed.js:215)"}, "fullDescription": {"text": "`server/services/social-feed.js:215` calls `GET https://www.youtube.com/feeds/videos.xml?channel_id=${channelId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.youtube.com/feeds/videos.xml`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20918f8203f70c74", "name": "Dangling fetch: POST https://api.beehiiv.com/v2/publications/${process.env.BEEHIIV_PUBLICATION_ID}/subscriptions (server", "shortDescription": {"text": "Dangling fetch: POST https://api.beehiiv.com/v2/publications/${process.env.BEEHIIV_PUBLICATION_ID}/subscriptions (server/services/appointment-tagger.js:202)"}, "fullDescription": {"text": "`server/services/appointment-tagger.js:202` calls `POST https://api.beehiiv.com/v2/publications/${process.env.BEEHIIV_PUBLICATION_ID}/subscriptions` 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.beehiiv.com/v2/publications/<p>/subscriptions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ab72027cb9227513", "name": "Dangling fetch: GET https://graph.facebook.com/v25.0${path}${separator}access_token=${encodeURIComponent(token)} (server", "shortDescription": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0${path}${separator}access_token=${encodeURIComponent(token)} (server/services/token-health.js:37)"}, "fullDescription": {"text": "`server/services/token-health.js:37` calls `GET https://graph.facebook.com/v25.0${path}${separator}access_token=${encodeURIComponent(token)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/graph.facebook.com/v25.0/<p>/<p>access_token=/<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-b03a7c2741bc58b4", "name": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/token-health.js:281)", "shortDescription": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/token-health.js:281)"}, "fullDescription": {"text": "`server/services/token-health.js:281` calls `GET https://api.linkedin.com/v2/me` 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.linkedin.com/v2/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b06d6a0b1c55d696", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (server/services/token-health.js:322)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (server/services/token-health.js:322)"}, "fullDescription": {"text": "`server/services/token-health.js:322` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9975fc1d75e03cd3", "name": "Dangling fetch: GET https://api.beehiiv.com/v2/publications/${pubId} (server/services/token-health.js:408)", "shortDescription": {"text": "Dangling fetch: GET https://api.beehiiv.com/v2/publications/${pubId} (server/services/token-health.js:408)"}, "fullDescription": {"text": "`server/services/token-health.js:408` calls `GET https://api.beehiiv.com/v2/publications/${pubId}` 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.beehiiv.com/v2/publications/<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-5a9d83fe7da580c7", "name": "Dangling fetch: GET https://api.dataforseo.com/v3/appendix/user_data (server/services/token-health.js:445)", "shortDescription": {"text": "Dangling fetch: GET https://api.dataforseo.com/v3/appendix/user_data (server/services/token-health.js:445)"}, "fullDescription": {"text": "`server/services/token-health.js:445` calls `GET https://api.dataforseo.com/v3/appendix/user_data` 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.dataforseo.com/v3/appendix/user_data`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f5fe39f8134b15f", "name": "Dangling fetch: GET https://api.stripe.com/v1/account (server/services/token-health.js:478)", "shortDescription": {"text": "Dangling fetch: GET https://api.stripe.com/v1/account (server/services/token-health.js:478)"}, "fullDescription": {"text": "`server/services/token-health.js:478` calls `GET https://api.stripe.com/v1/account` 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/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-b30aa042c941b73f", "name": "Dangling fetch: GET https://api.twilio.com/2010-04-01/Accounts/${sid}.json (server/services/token-health.js:516)", "shortDescription": {"text": "Dangling fetch: GET https://api.twilio.com/2010-04-01/Accounts/${sid}.json (server/services/token-health.js:516)"}, "fullDescription": {"text": "`server/services/token-health.js:516` calls `GET https://api.twilio.com/2010-04-01/Accounts/${sid}.json` 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.twilio.com/2010-04-01/accounts/<p>.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0034ed9dbba4f702", "name": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/services/token-health.js:549)", "shortDescription": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/services/token-health.js:549)"}, "fullDescription": {"text": "`server/services/token-health.js:549` calls `GET https://api.anthropic.com/v1/models?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:/api.anthropic.com/v1/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aeb6ee3cf69a68e4", "name": "Dangling fetch: GET https://api.openai.com/v1/models (server/services/token-health.js:583)", "shortDescription": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (server/services/token-health.js:583)"}, "fullDescription": {"text": "`server/services/token-health.js:583` calls `GET https://api.openai.com/v1/models` 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.openai.com/v1/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c381fa26340d2cf", "name": "Dangling fetch: GET https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(key)} (server/servi", "shortDescription": {"text": "Dangling fetch: GET https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(key)} (server/services/token-health.js:617)"}, "fullDescription": {"text": "`server/services/token-health.js:617` calls `GET https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(key)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa3af4ab8ed41dc2", "name": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=Bradenton,FL&key=${encodeURIComponent(key)", "shortDescription": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=Bradenton,FL&key=${encodeURIComponent(key)} (server/services/token-health.js:650)"}, "fullDescription": {"text": "`server/services/token-health.js:650` calls `GET https://maps.googleapis.com/maps/api/geocode/json?address=Bradenton,FL&key=${encodeURIComponent(key)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/maps.googleapis.com/maps/api/geocode/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a35ddf04e3c82104", "name": "Dangling fetch: GET https://api.sendgrid.com/v3/user/account (server/services/token-health.js:683)", "shortDescription": {"text": "Dangling fetch: GET https://api.sendgrid.com/v3/user/account (server/services/token-health.js:683)"}, "fullDescription": {"text": "`server/services/token-health.js:683` calls `GET https://api.sendgrid.com/v3/user/account` 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/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-2d7cf5c16bb99250", "name": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (server/services/token-health.js:722)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (server/services/token-health.js:722)"}, "fullDescription": {"text": "`server/services/token-health.js:722` calls `GET https://api.github.com/repos/${owner}/${repo}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<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-c22f73c159540318", "name": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${GOOGL", "shortDescription": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${GOOGLE_KEY} (server/services/satellite-analyzer.js:329)"}, "fullDescription": {"text": "`server/services/satellite-analyzer.js:329` calls `GET https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${GOOGLE_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/maps.googleapis.com/maps/api/geocode/json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8b464b4e61d2f5d", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_PROPERTY_MODEL}:generateContent?ke", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_PROPERTY_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/property-lookup/ai-property-lookup.js:1021)"}, "fullDescription": {"text": "`server/services/property-lookup/ai-property-lookup.js:1021` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_PROPERTY_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<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-4bf94410ebfa10c1", "name": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_s", "shortDescription": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,wind_gusts_10m,precipitation_probability,weather_code&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone="}, "fullDescription": {"text": "`server/services/intelligence-bar/tech-tools.js:420` calls `GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,wind_gusts_10m,precipitation_probability,weather_code&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone=America/New_York` 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.open-meteo.com/v1/forecast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-888ced7e90442e55", "name": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/services/content/content-a", "shortDescription": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/services/content/content-agent-tools.js:32)"}, "fullDescription": {"text": "`server/services/content/content-agent-tools.js:32` calls `GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/fawn.ifas.ufl.edu/controller.php/lastobservation/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34a61bdb9fda0cd9", "name": "Dangling fetch: POST https://addressvalidation.googleapis.com/v1:validateAddress?key=${key} (server/services/address-val", "shortDescription": {"text": "Dangling fetch: POST https://addressvalidation.googleapis.com/v1:validateAddress?key=${key} (server/services/address-validation/index.js:141)"}, "fullDescription": {"text": "`server/services/address-validation/index.js:141` calls `POST https://addressvalidation.googleapis.com/v1:validateAddress?key=${key}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/addressvalidation.googleapis.com/v1/<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-c87cc9e9de332798", "name": "Dangling fetch: POST https://www.omegaindexer.com/amember/dashboard/api (server/services/backlink-agent/signup-worker.js", "shortDescription": {"text": "Dangling fetch: POST https://www.omegaindexer.com/amember/dashboard/api (server/services/backlink-agent/signup-worker.js:21)"}, "fullDescription": {"text": "`server/services/backlink-agent/signup-worker.js:21` calls `POST https://www.omegaindexer.com/amember/dashboard/api` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.omegaindexer.com/amember/dashboard/api`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1f2b788a0e0c32d9", "name": "Dangling fetch: GET https://api.twitter.com/2/users/by/username/${target.x_username} (server/services/backlink-agent/x-p", "shortDescription": {"text": "Dangling fetch: GET https://api.twitter.com/2/users/by/username/${target.x_username} (server/services/backlink-agent/x-poller.js:25)"}, "fullDescription": {"text": "`server/services/backlink-agent/x-poller.js:25` calls `GET https://api.twitter.com/2/users/by/username/${target.x_username}` 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.twitter.com/<p>/users/by/username/<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-f384dacdab26b63b", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/seo/llm-mention-prober.js:99)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/seo/llm-mention-prober.js:99)"}, "fullDescription": {"text": "`server/services/seo/llm-mention-prober.js:99` calls `POST https://api.openai.com/v1/chat/completions` 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.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b2a9fed031e0a5c", "name": "Unused endpoint: USE /api/public/pest-forecast", "shortDescription": {"text": "Unused endpoint: USE /api/public/pest-forecast"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/public/pest-forecast` 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-76889df7c8e240c5", "name": "Unused endpoint: USE /api/", "shortDescription": {"text": "Unused endpoint: USE /api/"}, "fullDescription": {"text": "`server/index.js` 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-81c6209cbfd29154", "name": "Unused endpoint: USE /api/auth/send-code", "shortDescription": {"text": "Unused endpoint: USE /api/auth/send-code"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/auth/send-code` 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-8d1f3851b667f82b", "name": "Unused endpoint: USE /api/auth/verify-code", "shortDescription": {"text": "Unused endpoint: USE /api/auth/verify-code"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/auth/verify-code` 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-28e76030b917352b", "name": "Unused endpoint: USE /api/admin/auth/login", "shortDescription": {"text": "Unused endpoint: USE /api/admin/auth/login"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/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-dfadf961c1549be5", "name": "Unused endpoint: USE /api/stripe/webhook", "shortDescription": {"text": "Unused endpoint: USE /api/stripe/webhook"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/stripe/webhook` 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-b57174277168aa20", "name": "Unused endpoint: USE /api/webhooks/sendgrid", "shortDescription": {"text": "Unused endpoint: USE /api/webhooks/sendgrid"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/webhooks/sendgrid` 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-cd385a58074fb9fd", "name": "Unused endpoint: USE /api/webhooks/resend", "shortDescription": {"text": "Unused endpoint: USE /api/webhooks/resend"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/webhooks/resend` 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-6eb452fbfb454d20", "name": "Unused endpoint: USE /api/auth", "shortDescription": {"text": "Unused endpoint: USE /api/auth"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/auth` 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-10484ff622717d30", "name": "Unused endpoint: USE /api/services", "shortDescription": {"text": "Unused endpoint: USE /api/services"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/services` 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-3556b915946f91d2", "name": "Unused endpoint: USE /api/service/records", "shortDescription": {"text": "Unused endpoint: USE /api/service/records"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/service/records` 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-1340d960e275a287", "name": "Unused endpoint: USE /api/schedule", "shortDescription": {"text": "Unused endpoint: USE /api/schedule"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/schedule` 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-946dc627de4f272d", "name": "Unused endpoint: USE /api/billing", "shortDescription": {"text": "Unused endpoint: USE /api/billing"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/billing` 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-c3a8b7932f72b92f", "name": "Unused endpoint: USE /api/notifications", "shortDescription": {"text": "Unused endpoint: USE /api/notifications"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/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-829fe3db7e6f3ccd", "name": "Unused endpoint: USE /api/requests", "shortDescription": {"text": "Unused endpoint: USE /api/requests"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/requests` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f87eed006c8366f2", "name": "Unused endpoint: USE /api/bouncie", "shortDescription": {"text": "Unused endpoint: USE /api/bouncie"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/bouncie` 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-78e4250422641b48", "name": "Unused endpoint: USE /api/lawn-health", "shortDescription": {"text": "Unused endpoint: USE /api/lawn-health"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/lawn-health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d95f6b6be4decff8", "name": "Unused endpoint: USE /api/feed", "shortDescription": {"text": "Unused endpoint: USE /api/feed"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/feed` 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-9789e2197d196687", "name": "Unused endpoint: USE /api/satisfaction", "shortDescription": {"text": "Unused endpoint: USE /api/satisfaction"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/satisfaction` 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-8c4074101feb8fea", "name": "Unused endpoint: USE /api/property", "shortDescription": {"text": "Unused endpoint: USE /api/property"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/property` 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-2249df4232c9880e", "name": "Unused endpoint: USE /api/customer-pricing", "shortDescription": {"text": "Unused endpoint: USE /api/customer-pricing"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/customer-pricing` 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-46e56fdbaf8b7fb1", "name": "Unused endpoint: USE /api/service-preferences", "shortDescription": {"text": "Unused endpoint: USE /api/service-preferences"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/service-preferences` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30873d2a5b3f5f7f", "name": "Unused endpoint: USE /api/referrals", "shortDescription": {"text": "Unused endpoint: USE /api/referrals"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/referrals` 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-da7b886331b0df22", "name": "Unused endpoint: USE /r", "shortDescription": {"text": "Unused endpoint: USE /r"}, "fullDescription": {"text": "`server/index.js` declares `USE /r` 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-350ae3665aa53e8f", "name": "Unused endpoint: USE /l", "shortDescription": {"text": "Unused endpoint: USE /l"}, "fullDescription": {"text": "`server/index.js` declares `USE /l` 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-114e093442e08b33", "name": "Unused endpoint: USE /api/promotions", "shortDescription": {"text": "Unused endpoint: USE /api/promotions"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/promotions` 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-b90a25f6d5f27707", "name": "Unused endpoint: USE /api/documents", "shortDescription": {"text": "Unused endpoint: USE /api/documents"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/documents` 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-9b4e487593817d01", "name": "Unused endpoint: USE /api/badges", "shortDescription": {"text": "Unused endpoint: USE /api/badges"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/badges` 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-a2a21eba6328a50b", "name": "Unused endpoint: USE /api/tracking", "shortDescription": {"text": "Unused endpoint: USE /api/tracking"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/tracking` 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-1c75c6f40d00cae7", "name": "Unused endpoint: USE /api/onboarding", "shortDescription": {"text": "Unused endpoint: USE /api/onboarding"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/onboarding` 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-fb249c271605d179", "name": "Unused endpoint: USE /api/admin/auth", "shortDescription": {"text": "Unused endpoint: USE /api/admin/auth"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/auth` 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-092746d17c123d48", "name": "Unused endpoint: USE /api/admin/push", "shortDescription": {"text": "Unused endpoint: USE /api/admin/push"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/push` 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-cfda265bff680e4a", "name": "Unused endpoint: USE /api/admin/intelligence-bar", "shortDescription": {"text": "Unused endpoint: USE /api/admin/intelligence-bar"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/intelligence-bar` 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-add2515f2acc4783", "name": "Unused endpoint: USE /api/admin/tool-health", "shortDescription": {"text": "Unused endpoint: USE /api/admin/tool-health"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/tool-health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1c6fb1db38ace27", "name": "Unused endpoint: USE /api/admin/customers/intelligence", "shortDescription": {"text": "Unused endpoint: USE /api/admin/customers/intelligence"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/customers/intelligence` 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-bb10d7044faa9d8c", "name": "Unused endpoint: USE /api/admin/customers", "shortDescription": {"text": "Unused endpoint: USE /api/admin/customers"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/customers` 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-fe447c7681abdbbc", "name": "Unused endpoint: USE /api/admin/dashboard", "shortDescription": {"text": "Unused endpoint: USE /api/admin/dashboard"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/dashboard` 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-fb1fc6861e4ae200", "name": "Unused endpoint: USE /api/admin/command-center", "shortDescription": {"text": "Unused endpoint: USE /api/admin/command-center"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/command-center` 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-8b2fa41d176f1d8f", "name": "Unused endpoint: USE /api/admin/feature-flags", "shortDescription": {"text": "Unused endpoint: USE /api/admin/feature-flags"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/feature-flags` 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-e03258c676ef134f", "name": "Unused endpoint: USE /api/admin/turf-height", "shortDescription": {"text": "Unused endpoint: USE /api/admin/turf-height"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/turf-height` 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-22ba67047bd4c317", "name": "Unused endpoint: USE /api/admin/estimates", "shortDescription": {"text": "Unused endpoint: USE /api/admin/estimates"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/estimates` 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-b840e83817603f6e", "name": "Unused endpoint: USE /api/admin/service-outlines", "shortDescription": {"text": "Unused endpoint: USE /api/admin/service-outlines"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/service-outlines` 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-7d0a18c45ddf8864", "name": "Unused endpoint: USE /api/admin/pipeline", "shortDescription": {"text": "Unused endpoint: USE /api/admin/pipeline"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/pipeline` 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-f97755a26d3ff67c", "name": "Unused endpoint: USE /api/admin/lookup", "shortDescription": {"text": "Unused endpoint: USE /api/admin/lookup"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/lookup` 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-888a705c00461d0a", "name": "Unused endpoint: USE /api/estimates", "shortDescription": {"text": "Unused endpoint: USE /api/estimates"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/estimates` 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-fda6b8ddd893e312", "name": "Unused endpoint: USE /api/service-outlines", "shortDescription": {"text": "Unused endpoint: USE /api/service-outlines"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/service-outlines` 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-abcd143bf0da4ef5", "name": "Unused endpoint: GET /estimate/:token", "shortDescription": {"text": "Unused endpoint: GET /estimate/:token"}, "fullDescription": {"text": "`server/index.js` declares `GET /estimate/: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-2bbe16f8201afd38", "name": "Unused endpoint: USE /api/public/quote", "shortDescription": {"text": "Unused endpoint: USE /api/public/quote"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/public/quote` 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-122b84e42ad2868f", "name": "Unused endpoint: USE /api/public/estimator", "shortDescription": {"text": "Unused endpoint: USE /api/public/estimator"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/public/estimator` 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-cf8d1a1b795d6a63", "name": "Unused endpoint: USE /api/admin/reviews", "shortDescription": {"text": "Unused endpoint: USE /api/admin/reviews"}, "fullDescription": {"text": "`server/index.js` declares `USE /api/admin/reviews` 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/22567"}, "properties": {"repository": "wavespestcontrolfl/waves-customer-portal", "repoUrl": "https://github.com/wavespestcontrolfl/waves-customer-portal", "branch": "main"}, "results": [{"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439950, "scanner": "foundry_dataset", "fingerprint": "8f3e5bd87f6e905321978a29653fb76e8b1ebc92724a24594e9e23510eb4a72f", "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": "wavespestcontrolfl/waves-customer-portal:github-feedback-comment-165b27adf12638a0", "human_labels": ["api_integration_gap"], "issue_number": "", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-ea8609f26bfddd06", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal:github-feedback-comment-165b27adf12638a0\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: wavespestcontrolfl/waves-customer-portal:github-feedback-comment-165b27adf12638a0\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-165b27adf12638a0\",\n    \"kind\": \"commit_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/commit/2d0ee0ed772f92347587ba828a1cc46ef9f1a4df#commitcomment-186414689\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: commit_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/commit/2d0ee0ed772f92347587ba828a1cc46ef9f1a4df#commitcomment-186414689\\nTitle: \\nBody:\\n@codex please review this production Twilio inbound routing cutover.\\n\\nScope:\\n- All 25 configured Waves Twilio numbers moved from Studio Flow to /api/webhooks/twilio/voice.\\n- App route now requires staff press-1 before bridging; completed staff legs without acceptance fall through to Waves voicemail.\\n- Added audit and set-url scripts for Twilio routing verification/rollback.\\n- Updated Studio Flow docs to legacy rollback status.\\n\\nLive verification already completed:\\n- app-mode audit driftCount=0 across 25 numbers.\\n- Twilio true inbound total matched portal call_log total after excluding synthetic outbound-api test parents.\\n- accept path marked answered_by=human.\\n- no-accept path marked answered_by=voicemail with recording_url=true.\\n- targeted tests passed: twilio-voice-forward-accept + twilio-voice-phone-lookup.\\n\\nPlease focus review on call-complete/press-1 state tracking, rollback saf\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-40bd866dec79afcd\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1dad3014eb4786d6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439949, "scanner": "foundry_dataset", "fingerprint": "a5035ff72e64c7718872314969c7d45bf56fc5d1b201a4843714f42c507977a2", "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": "wavespestcontrolfl/waves-customer-portal#356", "human_labels": ["human_feedback_general"], "issue_number": "356", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-063cf1495f9b599c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#356\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#356\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d207990ae74806b9\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/356#discussion_r3150500692\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/356#discussion_r3150500692\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Resolve conflicting billing policy bullets**\\n\\nThe two newly added perks communicate mutually exclusive terms: `\\\"Always billed after the service is complete \u2014 never upfront\\\"` and `\\\"Autopay or pre-payment required\\\"`. If pre-payment is required in some cases, billing is not always post-service; if billing is always post-service, pre-payment cannot be required. This contradiction is user-facing in the estimate flow and can create confusion/disputes at acceptance time, so the copy should be made conditionally consistent.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-34edcf71983dd971\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-aa29d7ba9b6920d4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439948, "scanner": "foundry_dataset", "fingerprint": "57941e23545e5de0e9a8befe458694c5b58a95f16b4fe6d7789b7439f98c90e0", "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": "wavespestcontrolfl/waves-customer-portal#350", "human_labels": ["human_feedback_general"], "issue_number": "350", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d474e0f688063822", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#350\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#350\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cc0a77d4d2ca6674\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/350#discussion_r3150338419\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/350#discussion_r3150338419\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Keep \\\"All active\\\" from inheriting hidden source filters**\\n\\nSwitching the audience back to **All active** no longer clears segmentation: `segmentFilter` now always includes `segmentSources` when non-empty, even though source chips are only visible in `custom` mode. If an operator previously picked sources in `custom` and then returns to `all`, the preview/send APIs still receive `f.sources`, so the campaign silently goes to a subset instead of all active subscribers. This regression was introduced when the `segmentMode === 'all'` short-circuit was removed.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d5638668bac73b19\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d73f9fbefa2b4692", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439947, "scanner": "foundry_dataset", "fingerprint": "60579c7b5c48fe3b5095ffac57fe7e3e29ae4c47e3a38554e48576238f6debea", "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": "wavespestcontrolfl/waves-customer-portal#348", "human_labels": ["human_feedback_general"], "issue_number": "348", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-02fd2a4c44541b8e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#348\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#348\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d89d51997f76dda9\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/348#discussion_r3150298214\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/348#discussion_r3150298214\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Handle outbound callbacks where `To` is the admin leg**\\n\\n`/call-status` now assumes outbound callbacks identify the customer in `To`, but our outbound flow calls the admin first (`server/routes/admin-communications.js` sets `to: adminPhone` and `statusCallback` on that parent leg). If Twilio posts status before `twilio_call_sid` is backfilled (or that backfill fails), this insert path creates a second `call_log` row and touchpoint keyed to the admin phone instead of the customer, which pollutes communications history and dedupe by CallSid. Please avoid deriving outbound contact data from `To` in the fallback-insert path.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f75609ae34837812\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9335983d90f45ef0", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439946, "scanner": "foundry_dataset", "fingerprint": "b18de5ad949855655c96244f41d3c97597e66b0da8d5e9d67729dbffe14f8f80", "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": "wavespestcontrolfl/waves-customer-portal#345", "human_labels": ["api_integration_gap", "human_feedback_general"], "issue_number": "345", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0385034af3f56f02", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#345\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: wavespestcontrolfl/waves-customer-portal#345\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'api_integration_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-45994a5dc7374d5c\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/345#discussion_r3150235223\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/345#discussion_r3150235223\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Compute last open rate from the latest sent row**\\n\\nThe `delivered_count > 0` predicate means the dashboard can skip the newest `sent` campaign and use an older one for `lastOpenRate`, which makes the \u201cmost recent send\u201d tile stale whenever the latest send had zero deliveries (for example, an empty segment). `sendCampaign` can still mark a row as `sent` with `delivered_count = 0`, so this case is reachable and the tile will report a prior campaign\u2019s rate instead of `0%`/`\u2014` for the true latest send.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1c8dedf6fa409d0c\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/345#discussion_r3150235229\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/345#discussion_r3150235229\\nTitle: \\nBody:\\n**<sub><sub>![P3 Badge](https://img.shields.io/badge/P3-lightgrey?style=flat)</sub></sub>  Derive scheduled count from an untruncated source**\\n\\nThis count is taken from the `/sends` payload, but that backend route is capped at 500 rows (`server/routes/admin-newsletter.js`), so the d\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-2865e6477c33f64e", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439945, "scanner": "foundry_dataset", "fingerprint": "0bea2cb1d3f6fd73679c5b6e93a7bdfb41f385fc709cbb08ab83b5cece0ca42f", "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": "wavespestcontrolfl/waves-customer-portal#344", "human_labels": ["security_auth_secret"], "issue_number": "344", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-7860e13e68962531", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#344\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#344\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b9ea790e2f90c31f\",\n    \"kind\": \"review_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/344#discussion_r3150130531\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/344#discussion_r3150130531\\nTitle: \\nBody:\\n**<sub><sub>![P0 Badge](https://img.shields.io/badge/P0-red?style=flat)</sub></sub>  Gate tech-photo proxy behind an approved public auth flow**\\n\\nThis handler is fully unauthenticated, which introduces a new public route outside the allowed list in `AGENTS.md:230-234` (explicitly marked P0), and the UUID is not a reliable secret because unauthenticated booking responses already expose `technician_id` values (`server/routes/booking.js:200`). In practice, that means anyone can harvest tech IDs and fetch every profile photo via this endpoint, so the proxy should require a signed/tokenized context (for example, a track-token-scoped signature) instead of raw UUID access.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-0e66e6db6544cacf\",\n    \"kind\": \"review_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/344#discussion_r3150155761\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/344#discussion_r3150155761\\nTitle: \\nBody:\\nCritical catch \u2014 both AGENTS.md violation AND UUID-as-secret. Fixed in `5139c71` by removing the public proxy entirely and moving photo access inside the existing trusted-context boundaries.\\n\\n**Changes:**\\n\\n1. **Deleted** `server/routes/public-tech-photo.js`. Un-\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-a28656c279b1355f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439944, "scanner": "foundry_dataset", "fingerprint": "397765e5fa41b9d39454e32b4b0efd9b497c1cf9b5a2ef5d70bc3d66e6052dd6", "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": "wavespestcontrolfl/waves-customer-portal#340", "human_labels": ["data_schema_persistence", "human_feedback_general"], "issue_number": "340", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-619bb71bb6926dee", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#340\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: wavespestcontrolfl/waves-customer-portal#340\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'data_schema_persistence': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-70e9e29b0d393c6a\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/340#discussion_r3150009112\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/340#discussion_r3150009112\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Disambiguate service_record lookup by scheduled service**\\n\\nThis lookup matches only `customer_id`, `technician_id`, and `service_date`, so two same-day visits for the same customer/tech can resolve to the wrong `service_records` row. In that scenario, `POST /:id/photos` can bypass the intended pre-completion 409 by reusing another visit\u2019s record, and `GET /:id/photos` can return photos from the wrong visit, which will also skew the planned `missed_photo` alerting. At minimum, include more discriminators (for example `service_type`) and, longer term, add a direct FK from `service_records` to `scheduled_services` to make the mapping unambiguous.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ce6d2a2792d51d29\",\n    \"kind\": \"review_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/340#discussion_r3150024096\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/340#discussion_r3150024096\\nTitle: \\nBody:\\nReal cross-visit leak. Went with your \\\"longer term\\\" fix directly \u2014 added the FK rather than just stacking discriminators (the soft-\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1ae532df4abd6e5b", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439943, "scanner": "foundry_dataset", "fingerprint": "9efef29e6843e3d96838572b7c0c0ee236a2ed1b7625e9dd3d8b752770bc7d10", "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": "wavespestcontrolfl/waves-customer-portal#333", "human_labels": ["agent_instruction_gap", "data_schema_persistence", "human_feedback_general"], "issue_number": "333", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f480d799babeefc6", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 20, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#333\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 4\nLinked commit count: 20\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'human_feedback_general': 1, 'data_schema_persistence': 1}\nPolarities: {'bad': 3, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-961629c685698c6e\",\n    \"kind\": \"review_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/333#discussion_r3149819444\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/333#discussion_r3149819444\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Canonicalize scrape dedup key before upsert**\\n\\nThe conflict key is assembled from raw model output (`ev.startAt`, `ev.eventUrl`), but the row stores normalized values (`start` from `parseDateOrNull`, `eventUrl` from `safeHttpUrl`). When Claude emits equivalent values in different string forms (e.g., different timezone formatting or URL formatting), `external_id` changes even though it is the same event, so `ON CONFLICT (source_id, external_id)` misses and duplicate rows accumulate across pulls. Build `external_id` from canonicalized values (or a hash of them) after normalization.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4634b6d33a005845\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/333#discussion_r3149819450\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/333#discussion_r3149819450\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Guard contentSelector syntax before querySelector**\\n\\n`con\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-f805253429549ac8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439942, "scanner": "foundry_dataset", "fingerprint": "bcb5ba0c3ee7e78a80512ce4423c1d35c388058b78a68490d8b23e7a45456e37", "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": "wavespestcontrolfl/waves-customer-portal#332", "human_labels": ["runtime_failure", "security_auth_secret"], "issue_number": "332", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d06c0eda4c0d282e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#332\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#332\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'runtime_failure': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6190f6741ee5473e\",\n    \"kind\": \"review_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/332#discussion_r3149805417\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/332#discussion_r3149805417\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Accept full-length track tokens in socket auth**\\n\\nThe new socket `trackToken` gate only allows 32 hex chars (`/^[a-f0-9]{32}$/i`), but `scheduled_services.track_view_token` is generated as `encode(gen_random_bytes(32), 'hex')` and stored as 64-char tokens (also enforced by `server/routes/track-public.js` with a 64-char regex). In production this rejects valid `/track/:token` values with `TRACK_TOKEN_INVALID`, so the socket never connects and `customer:job_update` live refresh silently never works.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-097c95262a448a8d\",\n    \"kind\": \"review_comment\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/332#discussion_r3149811525\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/332#discussion_r3149811525\\nTitle: \\nBody:\\nCritical catch \u2014 the regex would have silently broken the entire feature in prod. Fixed in `867f5e5`:\\n\\n```js\\n// Before (wrong):\\nconst TRACK_TOKEN_RE = /^[a-f0-9]{32}$/i;\\n\\n// After:\\nconst TRACK_TOKEN_RE = /^[a-f0-9]{64}$/;\\n```\\n\\nVerified against the canonical source in `server/routes/track-public.js:31` (`/^[a-f0-9]{64}$/`) and\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-77013357e70a886e", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439941, "scanner": "foundry_dataset", "fingerprint": "8ce3ed0e2e956714b9bf5b35bcf2070a142a25bed7565ca44f86890e5e04eb20", "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": "wavespestcontrolfl/waves-customer-portal#330", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "330", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-eac9bf80efa028a2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#330\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: wavespestcontrolfl/waves-customer-portal#330\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1, 'agent_instruction_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-28522c3fbd59bc3b\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/330#discussion_r3145759362\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/330#discussion_r3145759362\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Include pre-completion inserts in the race-guarded transaction**\\n\\nBecause the transaction now starts only at `db.transaction(...)`, a concurrent status race can return 409 **after** `service_records`/`service_products` (and MOA alert side effects) have already been written earlier in the handler. This regression is new with the `transitionJobStatus` guard: if another admin cancels/completes first, this request now fails with `not in state`, but those pre-transaction writes remain committed, leaving completion artifacts for a job whose lifecycle transition was rejected. Wrap those writes in the same transaction (or compensate on 409) so failed races don't persist partial completion data.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-62d144d8b50adaa8\",\n    \"kind\": \"review_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/330#discussion_r3145774641\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/330#discussion_r3145774641\\nTitle: \\nBody:\\nReal regression I introduced. Fixed in `1d821a3` by pulling both INSERTs INSIDE the trx:\\n\\n```js\\nlet record;\\ntry {\\n  await\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-452c22537476e0a9", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439940, "scanner": "foundry_dataset", "fingerprint": "3b3353f6fdcc167b938ab5c51d4d24989adfd693e4620fdf7fcf2ab2ebca9064", "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": "wavespestcontrolfl/waves-customer-portal#327", "human_labels": ["api_integration_gap", "human_feedback_general"], "issue_number": "327", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1504ffa78b77f9eb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#327\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: wavespestcontrolfl/waves-customer-portal#327\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'api_integration_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a8bb2605d0f83152\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/327#discussion_r3145503729\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/327#discussion_r3145503729\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Refetch selected JobDrawer after successful map reassignment**\\n\\nAfter a successful `PUT /jobs/:id/assign`, this handler exits without updating any local job detail state, so if the same job is currently open in `JobDrawer` it keeps showing the old assignee until the drawer is closed/reopened. The board pin color updates via broadcast, but the drawer uses its own fetched `job` state and is not refreshed by this path, which leaves the UI internally inconsistent for dispatchers working with the drawer open.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c6c8fc4b87da926f\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/327#discussion_r3145519123\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/327#discussion_r3145519123\\nTitle: \\nBody:\\nReal local-inconsistency. Fixed in `cb2c165` with a `refetchSignal` counter:\\n\\n```js\\n// DispatchBoardPage\\nconst [drawerRefetchSignal, setDrawerRefetchSignal] = useState(0);\\n\\nconst handleJobDropOnTech = useCallback(async (jobId, techId) => {\\n  // ... fetch\\n\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-a3318ce0ade4dd8e", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439939, "scanner": "foundry_dataset", "fingerprint": "d0ecdae903cb56718655c619d41838e52877b86de3d678894ca354d845773a40", "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": "wavespestcontrolfl/waves-customer-portal#322", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "322", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f73ad841326a9fdb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#322\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#322\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'agent_instruction_gap': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-21ff3f2ff9776a8d\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/322#discussion_r3145332242\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/322#discussion_r3145332242\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Apply explicit nulls from job_update payload**\\n\\n`dispatch:job_update` forwards DB columns that are nullable (`service_type`, `window_start`, `window_end`) from the server payload (`server/services/job-status.js:194-197`, `server/routes/admin-dispatch.js:1173-1176`). Using `??` here treats `null` as \u201cno update\u201d and keeps the previous board value, so if a job window is intentionally cleared (e.g., moved to an anytime slot) and a later broadcast arrives, this tab will continue showing stale window/service data until a full `/board` reload. Check for `undefined` (or property presence) instead so explicit `null` from the broadcast is applied.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e8b806b8eb86b84c\",\n    \"kind\": \"review_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/322#discussion_r3145340084\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/322#discussion_r3145340084\\nTitle: \\nBody:\\nReal subtle bug. Fixed in `fc00b8a` by switching from `??` to a property-presence check via the `in` operator:\\n\\n```js\\nfunction pick(field) {\\n  return field in payload ? payl\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-01a3202353bdd533", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439938, "scanner": "foundry_dataset", "fingerprint": "221846f3091c079e9435c0caa13187e4b9e831724da2131b763db422b4bfcba9", "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": "wavespestcontrolfl/waves-customer-portal#321", "human_labels": ["human_feedback_general"], "issue_number": "321", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-039d41d8152bc02b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#321\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#321\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'human_feedback_general': 2}\nPolarities: {'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-80a5b742d9c4fa61\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/321#discussion_r3145268703\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/321#discussion_r3145268703\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Reject non-HTTP event URLs before rendering links**\\n\\n`event.eventUrl` is sourced from external RSS data and rendered directly into an anchor `href`, so a compromised or malformed feed can inject non-web schemes (for example `javascript:`) that execute when an admin clicks \u201cView source\u201d. This flow should validate/allowlist URL protocols (http/https) before storing or rendering links.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-729d1df259d23fc5\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/321#discussion_r3145268707\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/321#discussion_r3145268707\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Return null directly on date parse exceptions**\\n\\nIn `parseDateOrNull`, the `catch` block references `d`, but `d` is scoped to the `try` block, so any thrown date-conversion error becomes a new `ReferenceError` instead of gracefully returning `null`. A single malformed feed date can therefore fail an entire source ingestion run and increment `consecutive_failures`\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e60fc7293606fc05", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439937, "scanner": "foundry_dataset", "fingerprint": "de16a18cb717407afc9998ba37ebba25543015b710d0488b9072e67e68f7883c", "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": "wavespestcontrolfl/waves-customer-portal#320", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "320", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-022088ef4c66007c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#320\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: wavespestcontrolfl/waves-customer-portal#320\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1, 'agent_instruction_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a3a946b0266bd9eb\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/320#discussion_r3145264215\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/320#discussion_r3145264215\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Guard reassignment update against terminal-state races**\\n\\nThe terminal-status check runs before the transaction, but the write inside the transaction only filters by `id`, so a concurrent status change to `completed`/`cancelled`/`skipped` can slip in between and this route will still update `technician_id` and return 200. That violates the endpoint contract (`409` for terminal jobs) and allows reassignment of finished jobs under concurrent dispatcher/tech actions. Add a transactional guard (e.g., lock the row or include non-terminal status in the `UPDATE` predicate and treat 0 updated rows as 409).\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f433f1e3b515f2f0\",\n    \"kind\": \"review_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/320#discussion_r3145274154\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/320#discussion_r3145274154\\nTitle: \\nBody:\\nReal TOCTOU. Fixed in `90fb772` by re-applying the terminal-status filter as a transactional UPDATE predicate:\\n\\n```sql\\nUPDATE scheduled_services\\n   SET technician_id = ?, updated_at = NOW()\\n WHERE id = ?\\n   AND\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e575af39b9204fe7", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439936, "scanner": "foundry_dataset", "fingerprint": "292f87d5bcc4265675cebfd37edf256fd9ee11d034d8f608076e6536b1e49812", "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": "wavespestcontrolfl/waves-customer-portal#315", "human_labels": ["security_auth_secret"], "issue_number": "315", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d3caa33d8cbb732d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#315\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#315\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 2}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-68703ebbc500fba3\",\n    \"kind\": \"review_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/315#discussion_r3145118978\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/315#discussion_r3145118978\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Discard stale responses by request, not only by tech ID**\\n\\nThe race guard only checks `currentIdRef.current !== id`, which fails when two requests for the same `techId` are in flight. If a dispatcher opens tech A, closes quickly, then reopens tech A before the first fetch resolves, the older response can arrive last and overwrite fresher data from the second fetch. That breaks the drawer\u2019s stated \u201cfetch fresh on reopen\u201d behavior and can show outdated route/late-count values; use a per-request sequence token (or `AbortController`) so only the latest request is allowed to commit state.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-abd95247f43a7490\",\n    \"kind\": \"review_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/315#discussion_r3145122467\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/315#discussion_r3145122467\\nTitle: \\nBody:\\nReal same-tech reopen race. Fixed in `caa60c8` with a monotonic sequence token \u2014 covers both cross-tech and same-tech patterns:\\n\\n```js\\nconst fetchSeqRef = useRef(0);\\n\\nconst fetchTech = useCallback(async (id) => {\\n  const seq = ++fetchSeqRef.current;\\n  set\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-c5785e0081832f24", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439935, "scanner": "foundry_dataset", "fingerprint": "440e7d497d5a3007b378702d68cd389ce5ef4973277361fb6fa9572c7e431d50", "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": "wavespestcontrolfl/waves-customer-portal#311", "human_labels": ["api_integration_gap"], "issue_number": "311", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-da1cf4b50260433a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#311\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: wavespestcontrolfl/waves-customer-portal#311\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ee8e9fa57bc6c129\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/311#discussion_r3145053593\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/311#discussion_r3145053593\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Persist resolved IDs until hydration completes**\\n\\nIf a `dispatch:alert_resolved` event arrives before the initial `/alerts?unresolved=true` fetch resolves, this handler removes nothing from the still-empty state and does not remember the resolved id. When the in-flight hydration response was generated from an earlier DB snapshot, the merge logic can then re-introduce that already-resolved alert, leaving a stale card visible until a full remount. Track resolved ids seen during bootstrap (or filter fetched rows against a resolved-id set) so resolved broadcasts cannot be undone by late hydration.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7c9248555e317338\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-46bdec7a0f58b539", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439934, "scanner": "foundry_dataset", "fingerprint": "7f9f88b2be8043b68952b70b091663799d0f4cbaf844198d679670c990aa9814", "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": "wavespestcontrolfl/waves-customer-portal#308", "human_labels": ["data_schema_persistence", "human_feedback_general"], "issue_number": "308", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-e88039562956e92b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#308\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: wavespestcontrolfl/waves-customer-portal#308\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1, 'data_schema_persistence': 1}\nPolarities: {'neutral': 1, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1f48ab84ea64de99\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/308#discussion_r3145013622\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/308#discussion_r3145013622\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Make tech_late insert idempotent across processes**\\n\\nThe dedupe guard is only in the read query (`NOT EXISTS`) and the actual insert happens later in separate `createAlert` calls, so two scheduler instances can still race: both select the same late job before either insert commits, then both write unresolved `tech_late` rows and emit duplicate cards. The in-memory `isRunning` mutex only protects overlap inside one Node process, not across replicas or a second worker, so idempotency should be enforced at write time (e.g., DB-level unique constraint for unresolved `tech_late` per `job_id` or an atomic `INSERT ... SELECT ... ON CONFLICT DO NOTHING`).\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1ec7d06f025418d4\",\n    \"kind\": \"review_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/308#discussion_r3145027606\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/308#discussion_r3145027606\\nTitle: \\nBody:\\nReal race during Railway zero-downtime deploys. Fixed in `ed6c802` with a layered approach:\\n\\n**1. Partial unique index (DB-leve\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-b90664745785ecd9", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439933, "scanner": "foundry_dataset", "fingerprint": "1bec251b168af490dc448061e16c4bc385e50d7c2ecea0958b12bb700aa48ad2", "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": "wavespestcontrolfl/waves-customer-portal#303", "human_labels": ["api_integration_gap"], "issue_number": "303", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-9073bf61860ba0ac", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#303\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: wavespestcontrolfl/waves-customer-portal#303\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 5}\nPolarities: {'bad': 5}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0c6cda9c52fe0c15\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/303#discussion_r3144813292\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/303#discussion_r3144813292\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Ignore stale job fetch responses in drawer**\\n\\n`fetchJob` unconditionally writes `setJob(data)` after the async request resolves, so if the selected job changes while an earlier request is still in flight (for example, close one drawer and quickly open another), the slower older response can overwrite the newer selection. That can show the wrong customer/job details and cause the Mark En Route / Mark On Site action to update the wrong service. Please gate the response by the current `jobId` (or cancel prior requests with `AbortController`) before applying state.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-31eca3ef1507f857\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/303#discussion_r3144821178\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/303#discussion_r3144821178\\nTitle: \\nBody:\\nReal race \u2014 fixed in `000e8df` with the `currentIdRef` pattern (lighter than `AbortController`; either approach addresses your concern, this one keeps the change tighter).\\n\\n```diff\\n+const currentIdRef = useRef(null);\\n\\n const fetchJob = useCallback(async (id) => {\\n   ...\\n+  if (c\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-7ee40a4a28b4d47a", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439932, "scanner": "foundry_dataset", "fingerprint": "e28c2555c2b8848c4a7d86049b0b1a1d5eb58f912faf69847d5b4c70969239c1", "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": "wavespestcontrolfl/waves-customer-portal#302", "human_labels": ["api_integration_gap", "security_auth_secret"], "issue_number": "302", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-ab3bb60a59e48156", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#302\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#302\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'security_auth_secret': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6d33e84e34fac46f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/302#issuecomment-4324006951\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/302#issuecomment-4324006951\\nTitle: \\nBody:\\n@codex review\\n\\nCustomer-facing V1\u2192V2 cleanup. `/login`, `/pay/:token`, `/receipt/:token` now route directly to V2 pages. Worth a closer look:\\n\\n- `LoginPageV2.jsx` was just a re-export of V1 `LoginPage` (per the 2026-04-22 revert), so I wired `/login` directly to `LoginPage.jsx` and deleted the wrapper. Functionally identical to the prior behavior in both flag-on and flag-off branches.\\n- The deleted `ReceiptGate` previously fell back to `/pay/:token` (V1) when the paired flag was off. With V1 `PayPage` deleted, that fallback would have looped into V2 anyway \u2014 so removing the gate is safe.\\n- URL contract unchanged. SMS/email templates that link to `/pay/{token}` continue to work without server-side changes.\\n\\nBuild green. Out of scope: dispatch (held under deferral), `newsletter-v1` flag, `estimateEngine` v1.x semver.\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-d2313f56e9c7a1ae\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/302#issuecomment-4324010843\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/302#issuecomment-4324010843\\nTitle: \\nBody:\\nCodex Review: Didn't find any\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9172e1d5dc5f378d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439931, "scanner": "foundry_dataset", "fingerprint": "0117446fbffce4bbaff9f4041efc0d6b0dd9fb63325fef9337e3dec5716f8471", "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": "wavespestcontrolfl/waves-customer-portal#301", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "301", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.662, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-533e0649bf58f598", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#301\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#301\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-92556619fd87101e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/301#issuecomment-4323999252\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/301#issuecomment-4323999252\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3a01c0061108fe66\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/301#issuecomment-4324001183\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/301#issuecomment-4324001183\\nTitle: \\nBody:\\n{\\\"summary\\\":\\\"Reviewed the diff that wires `/api/webhooks/bouncie` into `pingTechLocation` and adds GPS-aware upsert logic in `tech-status`. The implementation preserves semantic statuses (`en_route`, `on_site`, `wrapping_up`) on conflict, leaves `current_job_id` untouched in GPS writes, uses parameterized SQL, and isolates dispatch-board freshness failures so they do not block existing webhook processing. I found no P0 issues in this change set.\\\",\\\"findings\\\":[]}\\n\\n [View task \u2192](https://chatgpt.com/s/cd_69eedd242eb08191989045c801f9e22b)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b4e1ddfd03e6c6af\", \"evidence-chain-comment_to_commit-ca8f44d4e7371981\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-41d5cd0f90b93a06", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439930, "scanner": "foundry_dataset", "fingerprint": "598866d495817a82948fab5ed7701032a94de1d1dd3681c0ebb632d34ea643e8", "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": "wavespestcontrolfl/waves-customer-portal#300", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "300", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-720aee5f94646afa", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#300\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#300\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-daaffffae39d9783\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/300#issuecomment-4323981832\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/300#issuecomment-4323981832\\nTitle: \\nBody:\\n@codex review\\n\\nFollow-up cleanup to #297. Two V1 orphan files (`pages/AdminDashboardPage.jsx`, `components/admin/Customer360Profile.jsx`) deleted plus the dead import line they left behind in `CustomersPage.jsx`, and 3 stale gate-era comments refreshed (`AdminLayoutV2`, `AdminLoginPage`, `CustomersPage` top doc). No behavior changes \u2014 `vite build` green. Dispatch surface, customer-facing V1/V2 pairs (`ff_customer_*_v2`), `newsletter-v1`, and `estimateEngine` semver are intentionally left alone.\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-2811bad18f044fda\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/300#issuecomment-4323986122\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/300#issuecomment-4323986122\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. :tada:\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-6db700c4cdf497bb", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439929, "scanner": "foundry_dataset", "fingerprint": "926615b828c9f51709a8080ccfe331e46c51652929d3fe04674cfd2015503722", "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": "wavespestcontrolfl/waves-customer-portal#299", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "299", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c6d869d10f7739aa", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#299\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#299\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e8722498ce94ea54\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/299#issuecomment-4323951884\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/299#issuecomment-4323951884\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-b627432965e1ab46\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/299#issuecomment-4323954823\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/299#issuecomment-4323954823\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Hooray!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-01da4d8c45cd1b72\", \"evidence-chain-comment_to_commit-82f691dc22040eee\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-ed44bd744334d1be", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439928, "scanner": "foundry_dataset", "fingerprint": "7d4ad532a33cf6a31c5e159bea9da9c092fb7f5423e2caac03a959acac195276", "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": "wavespestcontrolfl/waves-customer-portal#298", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "298", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-677794719f02e3d3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#298\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#298\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6e9236e7d2414833\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/298#issuecomment-4323923129\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/298#issuecomment-4323923129\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-da41f6f4a2ca4da0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/298#issuecomment-4323929186\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/298#issuecomment-4323929186\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Already looking forward to the next diff.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-da6bce2984ad216c\", \"evidence-chain-comment_to_commit-801ced77892001b3\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-custome\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-a819962dadb03278", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439927, "scanner": "foundry_dataset", "fingerprint": "378d09a2e64c3875f0724bf823cac74d0e7aaff99975686eae283c714cb851c2", "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": "wavespestcontrolfl/waves-customer-portal#296", "human_labels": ["agent_instruction_gap", "api_integration_gap", "build_install_failure", "test_ci_gap"], "issue_number": "296", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-93b58357814e8d0e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 50, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#296\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 10\nLinked commit count: 50\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 4, 'api_integration_gap': 4, 'build_install_failure': 1, 'test_ci_gap': 1}\nPolarities: {'bad': 10}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c3e8c8fc66cb6e69\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323805918\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323805918\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-becefea6f4fa3c5c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323815524\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323815524\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-8d89974e0da008d9\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323834093\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/296#issuecomment-4323834093\\nTitle: \\nBody:\\n@codex review\\n\\nDisposition for the two prior catches (P1: `socket.io-client` not declared; P2: socket connecting to same-origin instead of `API_BASE`) added in `3d96383`. Both fixe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8b332af4b8734762", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439926, "scanner": "foundry_dataset", "fingerprint": "622d1fec3dbf45b64b8fdb88995df758535db847ec4d707d6cf5db4cad517348", "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": "wavespestcontrolfl/waves-customer-portal#295", "human_labels": ["agent_instruction_gap", "api_integration_gap", "data_schema_persistence"], "issue_number": "295", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-758e4691a5714741", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#295\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#295\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1, 'data_schema_persistence': 1}\nPolarities: {'bad': 3}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-76c2ed873ec86d8c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/295#issuecomment-4323613235\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/295#issuecomment-4323613235\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-bab285d126e76a10\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/295#issuecomment-4323619847\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/295#issuecomment-4323619847\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Breezy!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  },\n  {\n    \"id\": \"github-feedback-comment-747918ad901d303c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/295#issuecomment-\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-749a6524338b79d3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439925, "scanner": "foundry_dataset", "fingerprint": "1fc068d6abf58083745b236b24a06f9e5f8e9dda53f7c7958914712350241cdd", "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": "wavespestcontrolfl/waves-customer-portal#294", "human_labels": ["agent_instruction_gap", "api_integration_gap", "data_schema_persistence", "runtime_failure"], "issue_number": "294", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4a605d73f6098dc9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#294\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: wavespestcontrolfl/waves-customer-portal#294\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'data_schema_persistence': 2, 'api_integration_gap': 1, 'runtime_failure': 1}\nPolarities: {'bad': 5}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a1c3662d3e52d30f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/294#issuecomment-4321660381\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/294#issuecomment-4321660381\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4cf649e10d00cbf7\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/294#issuecomment-4321670768\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/294#issuecomment-4321670768\\nTitle: \\nBody:\\n@codex review\\n\\nDisposition for the previous P1 (use `preDeployCommand` instead of `releaseCommand`) added in `0687141`. Verified Railway's actual config schema via their docs and corrected the key + value type (string \u2192 array). Reasoning in the threaded reply on the original review comment.\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3d10957fb941a4f1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/294#issuecomment-4321675251\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\n\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8449ff8617cf3c75", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439924, "scanner": "foundry_dataset", "fingerprint": "309184454f6af3e8a15c6945b97e4ecbf14f36d089c51b41dc4e0d531c7aa863", "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": "wavespestcontrolfl/waves-customer-portal#293", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "293", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f47fb87478afefa3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#293\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#293\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-78fbc559656924df\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/293#issuecomment-4321641079\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/293#issuecomment-4321641079\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-b731ae713e3ea6f8\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/293#issuecomment-4321645580\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/293#issuecomment-4321645580\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Already looking forward to the next diff.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-941d2707322f68cb\", \"evidence-chain-comment_to_commit-8e642697d2b34399\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-custome\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-5ee312852e1e9a14", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439923, "scanner": "foundry_dataset", "fingerprint": "e48e30fc83fa0612e530efbf59ce4e8bd0076b6e144f72e9196eca99d5908c2f", "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": "wavespestcontrolfl/waves-customer-portal#292", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "292", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a3e5ee5eb901022b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#292\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#292\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-171a5f2e383ff015\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/292#issuecomment-4321616086\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/292#issuecomment-4321616086\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-7f55511549ceb1a6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/292#issuecomment-4321622229\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/292#issuecomment-4321622229\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Keep them coming!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-855c11fac0732644\", \"evidence-chain-comment_to_commit-228769bd651713aa\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: so\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e5f07aed3cbc8155", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439922, "scanner": "foundry_dataset", "fingerprint": "7a21e7dc31275d6a95d0c96cfdf8381aad1a9bdb644197e9f0853b4d7e6c8b64", "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": "wavespestcontrolfl/waves-customer-portal#291", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "291", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-696f00720c7f39cc", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#291\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#291\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-00252215f61b3344\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/291#issuecomment-4321597008\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/291#issuecomment-4321597008\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-6f1bdb996685c761\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/291#issuecomment-4321598754\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/291#issuecomment-4321598754\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Can't wait for the next one!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5e56c13c03bc09e4\", \"evidence-chain-comment_to_commit-3ad291f9bfff90f8\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGrap\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-a3347a5b96b7997a", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439921, "scanner": "foundry_dataset", "fingerprint": "639bff22a8be380578c63b693674bad46f9432fa21c5f5a889ec1944cf76250c", "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": "wavespestcontrolfl/waves-customer-portal#290", "human_labels": ["agent_instruction_gap", "api_integration_gap", "ui_workflow_gap"], "issue_number": "290", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5298411f3b8527b4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#290\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: wavespestcontrolfl/waves-customer-portal#290\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'ui_workflow_gap': 3, 'api_integration_gap': 1}\nPolarities: {'bad': 5}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-411592fa434605c7\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/290#issuecomment-4321593800\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/290#issuecomment-4321593800\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ac8026366e9542ae\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/290#issuecomment-4321602560\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/290#issuecomment-4321602560\\nTitle: \\nBody:\\n@codex review\\n\\nDisposition for the previous P1 (preserve atomic guard when fromStatus is null) added in `8450975`: function and dev route now require `fromStatus` and reject null/undefined upstream, so the atomic guard always has a status predicate to gate on. Reasoning + smoke test results in the threaded reply on the original review comment.\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-58b58d7c1a2207df\",\n    \"kind\": \"review_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/290#discussion_r3143194265\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.c\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-b487b97f2b4b168d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439920, "scanner": "foundry_dataset", "fingerprint": "da12974cc22896142f441d4bfe25e9e94bef4dc0b837c924ce4309af036bf9a1", "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": "wavespestcontrolfl/waves-customer-portal#288", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "288", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1eaea1c9cfbc93ab", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#288\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#288\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5b135299b3078a79\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/288#issuecomment-4321573417\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/288#issuecomment-4321573417\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-73f3be1935fe794c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/288#issuecomment-4321577014\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/288#issuecomment-4321577014\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Swish!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-06271cbcdc993e17\", \"evidence-chain-comment_to_commit-d65c92c974daad92\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9e00e9fd93e0037f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439919, "scanner": "foundry_dataset", "fingerprint": "c1ef6d84edfd1173ddf382498a319d49ed837598e1ba827c0f9eada398a07bf1", "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": "wavespestcontrolfl/waves-customer-portal#287", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "287", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cf194297696182c0", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#287\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#287\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-eed37f09a539db1c\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/287#issuecomment-4321568693\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/287#issuecomment-4321568693\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ce22b1210e97f868\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/287#issuecomment-4321570408\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/287#issuecomment-4321570408\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Chef's kiss.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-32f86a0c10bb60de\", \"evidence-chain-comment_to_commit-fe3f05007b8851a6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9642b31b43b70c36", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439918, "scanner": "foundry_dataset", "fingerprint": "554e5f6eda3ee6b40a2ceeac9f2773aa5f6eed2feb1b506a59e864d50856b4dc", "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": "wavespestcontrolfl/waves-customer-portal#285", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "285", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2cfdf233e98f3577", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#285\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#285\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-dfa2ce77aa88702f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/285#issuecomment-4321536631\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/285#issuecomment-4321536631\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4ee990ec6227545d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/285#issuecomment-4321539666\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/285#issuecomment-4321539666\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Can't wait for the next one!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-969632af7a99d97a\", \"evidence-chain-comment_to_commit-dddb50224065c80b\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGrap\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8bbf2e1e875c8991", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439917, "scanner": "foundry_dataset", "fingerprint": "f861c6b4a4c4735a477e083412fd131173401419ee5d67914f828478fcf12252", "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": "wavespestcontrolfl/waves-customer-portal#284", "human_labels": ["agent_instruction_gap", "api_integration_gap", "security_auth_secret"], "issue_number": "284", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-1e8aac468a05daae", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 39, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#284\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#284\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 8\nLinked commit count: 39\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'api_integration_gap': 2, 'security_auth_secret': 4}\nPolarities: {'bad': 8}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-43a95f660be43f26\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/284#issuecomment-4321520026\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/284#issuecomment-4321520026\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-9b0529c67441f44d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/284#issuecomment-4321524553\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/284#issuecomment-4321524553\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. :+1:\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  },\n  {\n    \"id\": \"github-feedback-comment-4e847813dadbfc3b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/284#issuecomment-43215256\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-690d45e554bd7ca3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439916, "scanner": "foundry_dataset", "fingerprint": "e9eb12aad3754d96ce610213dbb2212a466e5c65078b649619a5ba67b9f6986d", "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": "wavespestcontrolfl/waves-customer-portal#283", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "283", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-51a18c24f6bfadf9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#283\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#283\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f41abdab6d975a13\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/283#issuecomment-4321507981\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/283#issuecomment-4321507981\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-2c8c97977d99c571\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/283#issuecomment-4321511789\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/283#issuecomment-4321511789\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Swish!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9a42143d67758a05\", \"evidence-chain-comment_to_commit-2deae2c178dd9cd8\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-ab519cb56529680d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439915, "scanner": "foundry_dataset", "fingerprint": "1d5741deff3aa5e2a7511ffbd4eb9f67a21823edef97d9b0956196c2d2d48d49", "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": "wavespestcontrolfl/waves-customer-portal#282", "human_labels": ["agent_instruction_gap", "api_integration_gap", "deployment_env_gap"], "issue_number": "282", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f2b47e1d1c4d33aa", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 20, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#282\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#282\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 4\nLinked commit count: 20\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'api_integration_gap': 1, 'deployment_env_gap': 1}\nPolarities: {'bad': 4}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b9bfa24418472e26\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321470020\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321470020\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e87bf88c6a27d881\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321477342\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321477342\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-38891e6908c40dd1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321481080\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/282#issuecomment-4321481080\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Bravo.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-18df24356b394daf", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439914, "scanner": "foundry_dataset", "fingerprint": "5f0c688828476ca530ed55625ad1b50c099dc12209a58354d23757a41f0f5381", "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": "wavespestcontrolfl/waves-customer-portal#280", "human_labels": ["agent_instruction_gap", "data_schema_persistence", "human_feedback_general", "runtime_failure"], "issue_number": "280", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-75e21db96e7de6cc", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 30, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#280\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: wavespestcontrolfl/waves-customer-portal#280\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 6\nLinked commit count: 30\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'data_schema_persistence': 3, 'human_feedback_general': 1, 'runtime_failure': 1}\nPolarities: {'bad': 5, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-58112e172d02b36f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/280#issuecomment-4321450232\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/280#issuecomment-4321450232\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-699ba557fa8d135b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/280#issuecomment-4321463368\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/280#issuecomment-4321463368\\nTitle: \\nBody:\\n@codex review\\n\\nDisposition for the previous P0 (work-order-status.js mismatch) added in `c1d25f2`: kept the CHECK as-is, extended the migration block comment with a known-mismatch note + link to tracking issue #281. Reasoning in the threaded reply on the original review comment.\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-7ff4dd4736d5407b\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/280#discussion_r3143106193\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-co\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-6bd8a4f7cc3deba2", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439913, "scanner": "foundry_dataset", "fingerprint": "538baffdb3d30fb0a69c35e921037b310fe245efb8d3c7c0392c6472bb008742", "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": "wavespestcontrolfl/waves-customer-portal#279", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "279", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-75b87ba953ae8f5c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#279\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#279\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6e4046b0ded4f629\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/279#issuecomment-4321434947\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/279#issuecomment-4321434947\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-fe56dcb28aff5211\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/279#issuecomment-4321439614\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/279#issuecomment-4321439614\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Bravo.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-20c5769a552c5f4d\", \"evidence-chain-comment_to_commit-f4e649d2eefb6c6a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8bb0dd5f364b6880", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439912, "scanner": "foundry_dataset", "fingerprint": "e4f74a0d70b9e928d801155ca5a5e04e92353462d3b0cfc761c250d557f1b76f", "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": "wavespestcontrolfl/waves-customer-portal#278", "human_labels": ["agent_instruction_gap", "api_integration_gap", "security_auth_secret"], "issue_number": "278", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a05fe25cd59a2b28", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 20, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#278\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#278\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 4\nLinked commit count: 20\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 2, 'security_auth_secret': 1}\nPolarities: {'bad': 4}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-55ebef5e1609a472\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/278#issuecomment-4321409777\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/278#issuecomment-4321409777\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-958e3c78261a75d7\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/278#discussion_r3143081531\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/278#discussion_r3143081531\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Move en-route transition after status persistence**\\n\\n`markEnRoute` is invoked before the route persists `status='en_route'`, so its side effects (track-state flip and possible SMS) can commit even when the later `scheduled_services` update fails and the API returns 500. That creates a split-brain state where customer tracking shows en route while admin status did not save, and retries become confusing/non-idempotent from the caller\u2019s perspective. Persisting the status first (or using a transaction for DB writes and firing SMS only after success) avoids this partial-commit behavior.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-8b2721e2289cc5cf\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"p\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-59e8d90d8585ba63", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439911, "scanner": "foundry_dataset", "fingerprint": "ecdc0a13a454358b9ee38f5b0ee027be43c43cef0af6684cc9048cc9862cf687", "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": "wavespestcontrolfl/waves-customer-portal#276", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "276", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-7327505567c93b47", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#276\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#276\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-acce9ea7fed6c02d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/276#issuecomment-4321354359\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/276#issuecomment-4321354359\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ee44a0d80a890c90\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/276#issuecomment-4321356243\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/276#issuecomment-4321356243\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Breezy!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-151903f90ba7eb57\", \"evidence-chain-comment_to_commit-f55f736171ca1270\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backe\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8640c0090f55e6ea", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439910, "scanner": "foundry_dataset", "fingerprint": "debffbefbf7644e5b96a2c112e972fbb3b30efd2ac6a81350431f50a0fa5c68f", "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": "wavespestcontrolfl/waves-customer-portal#275", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "275", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c053a0904a35ecf4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#275\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#275\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ec998b09d7543c6e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/275#issuecomment-4321330176\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/275#issuecomment-4321330176\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f299b934f6ae7256\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/275#discussion_r3143030942\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/275#discussion_r3143030942\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Align start_url with scoped path in section manifests**\\n\\n`start_url` is `/admin` while `scope` is `/admin/` (and the same pattern appears in `tech-manifest.json`), so the declared scope is invalid per Web App Manifest rules because the start URL is outside scope. In browsers that follow the fallback behavior, effective scope becomes the parent of `start_url` (i.e. `/`), which means the installed Admin/Tech apps are not actually constrained to their section and can run with full-site scope instead of the intended per-section app context.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-0636a2361b2f4abf\", \"evidence-chain-comment_to_commit-5264056ceec18505\"]\nSource graph evidence:\nSource evidence repo graph summary\nR\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-51cb6d58aaed4145", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439909, "scanner": "foundry_dataset", "fingerprint": "52128103d7dddd8d63edfef738b09171f52fcc5d26e7d788fc95795907205e26", "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": "wavespestcontrolfl/waves-customer-portal#273", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "273", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-21fa38a85580f6a8", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#273\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#273\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-28487e3df61f521a\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/273#issuecomment-4321285862\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/273#issuecomment-4321285862\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a3766cd32ade23cb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/273#issuecomment-4321286962\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/273#issuecomment-4321286962\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Chef's kiss.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-14ba63343b24bafb\", \"evidence-chain-comment_to_commit-27b38e3028cf9aeb\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-fb27e4ce3034e56b", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439908, "scanner": "foundry_dataset", "fingerprint": "09329af0c437cb57553faf3c65b380fd33a1f36a75dede24afb7b2f33a6376a6", "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": "wavespestcontrolfl/waves-customer-portal#272", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "272", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-6365964649fd2c41", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#272\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#272\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a8b3d8bad3e9f76f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/272#issuecomment-4321281624\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/272#issuecomment-4321281624\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-47d3531b7037c5ef\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/272#issuecomment-4321282655\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/272#issuecomment-4321282655\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Can't wait for the next one!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-34a1ae72dfa012f5\", \"evidence-chain-comment_to_commit-f28201d25a25fcfb\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGrap\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e4303b446e493c9f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439907, "scanner": "foundry_dataset", "fingerprint": "0bd78275380de53bf2c8042aa88f877bd4987fea5d05fc4aa3bafa0b0cb0fad0", "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": "wavespestcontrolfl/waves-customer-portal#271", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "271", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4fb1fdfa44ce04df", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#271\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#271\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-17eb3c45674f480e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/271#issuecomment-4321278860\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/271#issuecomment-4321278860\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3fe9f6127dcb407e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/271#issuecomment-4321279663\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/271#issuecomment-4321279663\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. What shall we delve into next?\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-9afe2a6d1ec6f4f7\", \"evidence-chain-comment_to_commit-cc4bb193bc305e57\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-b12383d73b9ca49d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439906, "scanner": "foundry_dataset", "fingerprint": "cff9b4241d0fb9ce02bb2bed649af8c1a7bbdebbddf6d6312caf442cccf1c980", "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": "wavespestcontrolfl/waves-customer-portal#270", "human_labels": ["agent_instruction_gap", "api_integration_gap", "deployment_env_gap"], "issue_number": "270", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-385993f048dc9b20", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#270\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#270\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'api_integration_gap': 1, 'deployment_env_gap': 2}\nPolarities: {'bad': 5}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9a0985ac306fb4bb\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321264659\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321264659\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-bfe6b8a081b2586a\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321270631\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321270631\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-bd263ef43530c4af\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321272035\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/270#issuecomment-4321272035\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Another round soon, please!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this r\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-09bec4dad2c3b3b8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439905, "scanner": "foundry_dataset", "fingerprint": "19ca74f6e156db62c331e08916981921cf44671a03c04dc7719273104cdb8a0c", "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": "wavespestcontrolfl/waves-customer-portal#269", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "269", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0ff33ff2a5535db5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#269\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#269\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5ee70ea2d51e5f87\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/269#issuecomment-4321261264\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/269#issuecomment-4321261264\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-7ee7621f7de268c6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/269#issuecomment-4321262430\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/269#issuecomment-4321262430\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Already looking forward to the next diff.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5f5be01c730e14f2\", \"evidence-chain-comment_to_commit-6217f2affdf46871\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-custome\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-83c8d55a6d328d2c", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439904, "scanner": "foundry_dataset", "fingerprint": "ebcc628d78dd0de953a7aa29ac7dd3212ad005484bd3667a8e960e9b80c1ece5", "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": "wavespestcontrolfl/waves-customer-portal#268", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "268", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-9bc379aed6f1524d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#268\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#268\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a0a8e788e793f15b\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/268#issuecomment-4321258317\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/268#issuecomment-4321258317\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-933a4e8b4ecb524d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/268#issuecomment-4321259745\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/268#issuecomment-4321259745\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Delightful!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e085e8cc925e5ac9\", \"evidence-chain-comment_to_commit-5e49db7d93d3247a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_b\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-ae45670a34395390", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439903, "scanner": "foundry_dataset", "fingerprint": "ab642a1cac418baaca7bc5e6712a21d174b822d2080d2d0544574b2551fa3a67", "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": "wavespestcontrolfl/waves-customer-portal#266", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "266", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-740f2682700887a9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#266\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#266\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-928edd9119d584ff\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/266#issuecomment-4321200760\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/266#issuecomment-4321200760\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c49884d98851d592\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/266#issuecomment-4321201841\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/266#issuecomment-4321201841\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Keep them coming!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-6b4189e4b6aacb67\", \"evidence-chain-comment_to_commit-191170bb21177ec5\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: so\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-c9097d84cb771c35", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439902, "scanner": "foundry_dataset", "fingerprint": "ca2551b2da9baa95bd22bdb5b6c5a7025a056f3be7a67b7afbccfd4d8508d96e", "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": "wavespestcontrolfl/waves-customer-portal#265", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "265", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cf1f2704a4609313", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#265\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#265\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b3e478cbda17fd7f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/265#issuecomment-4321198791\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/265#issuecomment-4321198791\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-2c5fb4cc4105e925\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/265#issuecomment-4321199845\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/265#issuecomment-4321199845\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Nice work!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b2223737a28d9019\", \"evidence-chain-comment_to_commit-b5b7fff869b0f678\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_ba\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-0c2ae680dc19321f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439901, "scanner": "foundry_dataset", "fingerprint": "4f14438765a10d366f049ab5366bf9e16aebef2c326dc5668359811a960752d6", "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": "wavespestcontrolfl/waves-customer-portal#264", "human_labels": ["agent_instruction_gap", "data_schema_persistence", "human_feedback_general", "ui_workflow_gap"], "issue_number": "264", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c6fa8f6cc6f658fd", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 30, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#264\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: wavespestcontrolfl/waves-customer-portal#264\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 6\nLinked commit count: 30\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1, 'agent_instruction_gap': 2, 'ui_workflow_gap': 2, 'human_feedback_general': 1}\nPolarities: {'bad': 5, 'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-40f1f100de27c8a5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/264#issuecomment-4321251274\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/264#issuecomment-4321251274\\nTitle: \\nBody:\\nAPPROVE WITH NITS - P2 only, optional\\n\\nReview scope: rebased locally onto current `origin/main` (`c6bf3f7`) for review. The rebase was clean and the PR remains a single-file change in `server/routes/lead-webhook.js`; `git diff origin/main -- server/models` is empty.\\n\\nFindings posted inline:\\n- P2: documented nested `body.attribution.domain` is not used if `landing_url`/`referrer` are absent, so those submissions can still fall back to `lead_source=website`.\\n- P2: normalized nested `gclid` is used for the `leads` row, but not reused for the later `ad_service_attribution` insert.\\n\\nChecks:\\n- `npm run build` passed, including `verify:blog-schema` and `check:portal-brand`.\\n- `npm run lint --if-present` completed; this repo does not define a lint script.\\n- `npm test` ran but failed in existing pricing-engine baseline regressions unrelated to this route change: `zone_d_quarterly_pest_bahia_basic`, `german_roach_modifier_pest_q\"\n  },\n  {\n    \"id\": \"github-feedback-comment-6b1f8462628a82da\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/264#issuecomment-4321280183\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/w\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-efe20b1dfb6ee793", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439900, "scanner": "foundry_dataset", "fingerprint": "2d0795181fc79b1ed340016b3a8bb9f51e92e57d39275100bd493035aac8a63f", "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": "wavespestcontrolfl/waves-customer-portal#263", "human_labels": ["agent_instruction_gap", "api_integration_gap", "human_feedback_general"], "issue_number": "263", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0881580d11addace", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 20, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#263\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: wavespestcontrolfl/waves-customer-portal#263\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 4\nLinked commit count: 20\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'human_feedback_general': 2, 'api_integration_gap': 1}\nPolarities: {'bad': 2, 'neutral': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0745dd5f0c4fa894\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/263#issuecomment-4321196313\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/263#issuecomment-4321196313\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-9e9db347622175ba\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/263#discussion_r3142944716\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/263#discussion_r3142944716\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Stop logging suppressed SMS content**\\n\\nThe new suppression branch logs both the destination phone and a 60-character body preview (`\\\"${body.substring(0, 60)}...\\\"`), which will capture customer PII from internal alerts (names, phone numbers, addresses) in plain text logs whenever `OWNER_SMS_DISABLED=true`. This introduces exactly the non-card PII logging risk called out in `AGENTS.md` and should be replaced with ID-only metadata (e.g., message type and recipient hash/last4).\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-f5d30ca8f5a4accb\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e0f025ab0c86b953", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439899, "scanner": "foundry_dataset", "fingerprint": "0f85e303d9e121fdc1eec5038e2abb7a91f2707c3501d0bc7de227b93add4c12", "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": "wavespestcontrolfl/waves-customer-portal#262", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "262", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-3b75d606aa7933c9", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#262\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#262\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-f869de9369400dff\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/262#issuecomment-4321157790\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/262#issuecomment-4321157790\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-860ef23160a52309\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/262#issuecomment-4321159013\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/262#issuecomment-4321159013\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Swish!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7d19522bd2701b30\", \"evidence-chain-comment_to_commit-3c17cd43f454aae2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-3d691ab2085caa28", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439898, "scanner": "foundry_dataset", "fingerprint": "d8933ed35640d7628123ca090d7ed137fd5f950ed75f806956df17df4f98fb9b", "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": "wavespestcontrolfl/waves-customer-portal#261", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "261", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-90932091229ac3d7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#261\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#261\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ad1bc5a15c16ed5e\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/261#issuecomment-4321154849\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/261#issuecomment-4321154849\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-ced294f391f24289\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/261#issuecomment-4321156269\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/261#issuecomment-4321156269\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Keep them coming!\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-eb13902a23d89260\", \"evidence-chain-comment_to_commit-0b908fdc0ab65a15\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: so\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-ef64af3d0d054cd4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439897, "scanner": "foundry_dataset", "fingerprint": "f23e14b1a353806b71a12676d2cfd2e7bdb3003fec2bcdc04833cfc29b4c07e0", "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": "wavespestcontrolfl/waves-customer-portal#260", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "260", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8e21aa15184c4fb1", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#260\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#260\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e1b2df4b611e20e8\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/260#issuecomment-4321151253\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/260#issuecomment-4321151253\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-40db50088f05f221\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/260#issuecomment-4321152408\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/260#issuecomment-4321152408\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. Bravo.\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8a4f48d6703921d8\", \"evidence-chain-comment_to_commit-674060f50056d8b4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-c67869d83cb13f67", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439896, "scanner": "foundry_dataset", "fingerprint": "806a0f05a9e4f02490d52e5eda82f5dd473a3c4699a54fb9eb71c470442aab5e", "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": "wavespestcontrolfl/waves-customer-portal#258", "human_labels": ["agent_instruction_gap", "api_integration_gap"], "issue_number": "258", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2b7ed4f06d6a155f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#258\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#258\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ce566af00d62ebf0\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/258#issuecomment-4321121707\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/258#issuecomment-4321121707\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-e5447a69bda87aca\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/258#issuecomment-4321123391\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/258#issuecomment-4321123391\\nTitle: \\nBody:\\nCodex Review: Didn't find any major issues. What shall we delve into next?\\n\\n<details> <summary>\u2139\ufe0f About Codex in GitHub</summary>\\n<br/>\\n\\n[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you\\n- Open a pull request for review\\n- Mark a draft as ready\\n- Comment \\\"@codex review\\\".\\n\\nIf Codex has suggestions, it will comment; otherwise it will react with \ud83d\udc4d.\\n\\n\\n\\n\\nCodex can also answer questions or update the PR. Try commenting \\\"@codex address that feedback\\\".\\n            \\n</details>\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-608d64ff6bfdfb1a\", \"evidence-chain-comment_to_commit-45ddc0a72cdef292\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGr\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-adf7cc1e47d9c8c8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439895, "scanner": "foundry_dataset", "fingerprint": "d951a1a75d8a0a4656b58b607feb8f423693a872779bfb85151b3132e2e3b9b3", "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": "wavespestcontrolfl/waves-customer-portal#257", "human_labels": ["agent_instruction_gap", "api_integration_gap", "human_feedback_general"], "issue_number": "257", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-0de01ce47ab5a75c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#257\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: wavespestcontrolfl/waves-customer-portal#257\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_feedback_general': 3}\nPolarities: {'bad': 2, 'neutral': 3}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-17183341c432878f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/257#issuecomment-4321100266\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/257#issuecomment-4321100266\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-aa89e6ed32ccba99\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/257#discussion_r3142887888\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/257#discussion_r3142887888\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Pass API_BASE to ensurePushSubscription**\\n\\n`NotificationBell` derives `API_BASE` from `VITE_API_URL` for all bell API calls, but the new push-enable path calls `ensurePushSubscription` without `apiBase`, so it falls back to `'/api'`. In environments where the frontend is configured to talk to a different API origin, enabling push will hit the wrong host and fail while the rest of the bell continues to work. Pass `apiBase: API_BASE` in this call to keep push enrollment aligned with the configured backend.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-0ee704f62b208233\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wav\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-01a40e3b0053c1cd", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439894, "scanner": "foundry_dataset", "fingerprint": "18a951e9c1d3656fade27d4176afcd3d9030ae89df60ce8561ac1929af7b3903", "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": "wavespestcontrolfl/waves-customer-portal#256", "human_labels": ["human_feedback_general"], "issue_number": "256", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.684, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cc352b81ff7849a2", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 32, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#256\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#256\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 8\nLinked commit count: 32\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 8}\nPolarities: {'neutral': 8}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-cc6ed0c8ce431a74\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320780589\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320780589\\nTitle: \\nBody:\\n@codex review\"\n  },\n  {\n    \"id\": \"github-feedback-comment-965ac6255694aeaa\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320805690\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320805690\\nTitle: \\nBody:\\n@codex address that feedback\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1561f886702e819d\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320805945\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320805945\\nTitle: \\nBody:\\nTo use Codex here, [create an environment for this repo](https://chatgpt.com/codex/cloud/settings/environments).\"\n  },\n  {\n    \"id\": \"github-feedback-comment-3a6c04a41584b768\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/256#issuecomment-4320822236\",\n    \"text\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d9558b059b0c189c", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439893, "scanner": "foundry_dataset", "fingerprint": "6aaba82e88b3baca45efed030e4eadfce303dd067f7bf18d22a770f8ed3a35db", "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": "wavespestcontrolfl/waves-customer-portal#255", "human_labels": ["api_integration_gap", "human_feedback_general"], "issue_number": "255", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.684, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5ade5db9645fa0e5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#255\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: wavespestcontrolfl/waves-customer-portal#255\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 2, 'api_integration_gap': 1}\nPolarities: {'neutral': 2, 'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8f9e8a5c725ffce1\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/255#issuecomment-4320914246\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/255#issuecomment-4320914246\\nTitle: \\nBody:\\n@codex review\"\n  },\n  {\n    \"id\": \"github-feedback-comment-5edf3ed814419a21\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/255#discussion_r3142790125\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/255#discussion_r3142790125\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Restrict 7-day card alert to cards truly expiring soon**\\n\\nThe `cards_expiring_7d` query currently compares `make_date(exp_year, exp_month, 1)` to `today + 7 days`, which triggers for any card in the next calendar month (and also already-expired cards) even when expiry is more than 7 days away. In `computeDashboardAlerts`, this inflates the alert count and unread bell badge with false positives (for example, on April 26 a card expiring in May is counted although it remains valid through May 31). Use an end-of-month expiry date and a bounded window (e.g., between today and today+7d) to match the alert label.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-1361e44f1993acd5\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-aa118f982b29c4ac", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439892, "scanner": "foundry_dataset", "fingerprint": "d37239f484864b4cb9d2780e32dac909737ff9db753b3e11f28a6945c07325e5", "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": "wavespestcontrolfl/waves-customer-portal#254", "human_labels": ["agent_instruction_gap", "human_feedback_general"], "issue_number": "254", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c824057361ca89eb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 40, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#254\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#254\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 8\nLinked commit count: 40\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 4, 'agent_instruction_gap': 4}\nPolarities: {'neutral': 4, 'bad': 4}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-fd5a8e3dd697f8b5\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#issuecomment-4320914272\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#issuecomment-4320914272\\nTitle: \\nBody:\\n@codex review\"\n  },\n  {\n    \"id\": \"github-feedback-comment-c8952d5e0f29e56f\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#issuecomment-4321086241\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#issuecomment-4321086241\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-72c96a4b103b3a28\",\n    \"kind\": \"review_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#discussion_r3142792314\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/254#discussion_r3142792314\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Detect roach fee in legacy one-time item shape**\\n\\n`findInitialRoachItem()` only matches entries where `it.service === 'pest_initial_roach'`, but the v1 payload consumed in this same code path stores one-ti\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d231388bb28771ce", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439891, "scanner": "foundry_dataset", "fingerprint": "20a02a7710afb98fff181fde306c53dc72097f01bd5858dd334a62d02ffad0cd", "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": "wavespestcontrolfl/waves-customer-portal#1865", "human_labels": ["api_integration_gap", "api_or_backend", "data_schema_persistence", "docs_or_claims", "schema_or_data", "test_or_ci"], "issue_number": "1865", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8b0c7e1c36a9947c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 7, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 4, "docs_or_claims": 1, "schema_or_data": 1}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1865\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: wavespestcontrolfl/waves-customer-portal#1865\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 2\nLinked commit count: 2\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 7\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'schema_or_data': 1, 'api_or_backend': 4, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3989a7fe8d6b279d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1865\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1865\\nTitle: Add Lawn Care Re-Service (mirrors Pest Control Re-Service)\\nBody:\\n## What\\n\\nAdds a **Lawn Care Re-Service** to the Service Library, one-for-one with the existing **Pest Control Re-Service** (`pest_re_service`) \u2014 a free callback visit between regular service intervals for active recurring lawn-care customers experiencing breakthrough weed / disease / insect pressure.\\n\\n## How\\n\\nThis is a **single additive migration** (`server/models/migrations/20260618000001_lawn_re_service.js`) \u2014 **no runtime code change** is required, because the re-service concept is already fully generic:\\n\\n- The `is_callback` flag and the dispatch callback routing, service-record, and document callback copy all key off the **\\\"Re-Service\\\"** / **\\\"callback\\\"** name, so naming the row \\\"Lawn Care Re-Service\\\" picks up all of that automatically.\\n- `PROJECT_TYPE_BY_SERVICE_KEY` already routes `/^lawn_/` \u2192 `one_time_lawn_treatment`, so completions render through the typed lawn `Completion\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-b44d11e42e796bdd\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1865#pullrequestreview-4526375995\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1865 Add Lawn Ca\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-555f846b5ae18ef6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439890, "scanner": "foundry_dataset", "fingerprint": "3a7bd936ef0d828b521ca4d9957acca3b2074f8d64b17e386ca53daec4abacb9", "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": "wavespestcontrolfl/waves-customer-portal#1855", "human_labels": ["api_integration_gap", "api_or_backend", "data_schema_persistence", "docs_or_claims", "schema_or_data", "test_or_ci"], "issue_number": "1855", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-4434a8d94d1e6c35", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 18, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 10, "docs_or_claims": 1, "schema_or_data": 3}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1855\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1855\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 18\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 1}\nPolarities: {'bad': 2}\nChanged file labels: {'docs_or_claims': 1, 'api_or_backend': 10, 'schema_or_data': 3, 'test_or_ci': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aa5e9eed919c3b5e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1855\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1855\\nTitle: Cross-provider routing Phase 3 \u2014 LLM judge + readiness bar + operator-approved live flip\\nBody:\\n## Context\\nPhase 3 of the cross-provider initiative (PR1 #1845 foundation, PR2 #1848 shadow logging). This closes the loop and answers **\\\"at what point does the better model take over permanently?\\\"** \u2014 a nightly LLM judge scores each shadow pair, a readiness bar decides when a candidate has earned promotion, a **deduped admin bell alert** fires when it \\\"wins\\\", and the **owner** promotes it via a gated Intelligence Bar action that makes the candidate live (prior provider retained as automatic fallback).\\n\\n## Safety invariants (load-bearing)\\n- **Default = today's behavior** \u2014 no `model_provider_modes` row \u21d2 each feature resolves to its baseline provider (estimate\u2192Anthropic, call-extract\u2192Gemini). Merge is a no-op until someone promotes.\\n- **Fallback on failure, always** \u2014 even after promotion, a candidate error/invalid result falls back to the prior provi\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-973754653d8114a8\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1855#pullrequestreview-4514137961\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1855 Cross-provider rou\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-8fa66abd34012fdc", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439889, "scanner": "foundry_dataset", "fingerprint": "f98bd4e07e0d44e1a28bd8c4b904afc936db5072ee6c54479cd248beb99f4e4b", "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": "wavespestcontrolfl/waves-customer-portal#1847", "human_labels": ["agent_instruction_gap"], "issue_number": "1847", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-b0e540cf7c4c0a80", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1847\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1847\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9146c8c58438befe\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1847\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1847\\nTitle: Remove redundant read-only \\\"Lawn Sq Ft Used\\\" field from Dethatching block\\nBody:\\n## What\\n\\nRemoves the read-only **\\\"Lawn Sq Ft Used\\\"** field from the Dethatching one-time-service block in the estimate tool (`EstimateToolViewV2.jsx`).\\n\\n## Why\\n\\nThat field just echoed `effectiveTurfSqFt` \u2014 the exact same turf area already captured and displayed in the authoritative **\\\"Confirmed Sq Ft\\\"** input at the top of the lawn service. It was read-only, accepted no input, and fed no pricing independently, so it was pure visual redundancy on the screen.\\n\\n## Behavior\\n\\n- **No pricing or logic change.** `effectiveTurfSqFt` still drives dethatching pricing exactly as before; only the duplicate display was removed.\\n- The Dethatching grid now begins with **Grass Type / Track**.\\n- The separate, genuinely distinct **\\\"Plug Area (sq ft)\\\"** input in the Lawn Plugging block is intentionally left untouched (different, often-smaller treatment area).\\n\\n## Diff\\n\\n`client/src/pages/\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3e1e2925f855c890\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-b4e797a9a4c69341", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439888, "scanner": "foundry_dataset", "fingerprint": "9fed59aa36a9712ea07cbfa28f09d55757bc5b8bad18288891c5b964d9590386", "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": "wavespestcontrolfl/waves-customer-portal#1842", "human_labels": ["agent_instruction_gap"], "issue_number": "1842", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.627, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2bd92f565672a6f4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1842\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1842\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bbce3a32cb146d80\",\n    \"kind\": \"issue_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/issues/1842\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/issues/1842\\nTitle: Optional: rename legacy FAST tier to explicit quality-tier names\\nBody:\\nLow priority. After PR #1837, the tier registry is quality-only, so `FAST` \u2192 Opus 4.8 is semantically odd (a reader assumes latency/cost). The header comment documents this, but the name is still a footgun. Optional cleanup: rename `FAST` (e.g. `STANDARD`) or move to explicit `QUALITY_TIER.*` naming. Touches ~60 importers + CLAUDE.md, so it's its own PR \u2014 not urgent.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-a3a720f524b19a08\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-aa3db6c4dc68a8c7", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439887, "scanner": "foundry_dataset", "fingerprint": "1b90b2ff4650694242575aa40f968e938ce776a0efd9d10ddecca8eadf1398df", "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": "wavespestcontrolfl/waves-customer-portal#1830", "human_labels": ["human_feedback_general"], "issue_number": "1830", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.842, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-db6ab0093bf7a449", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1830\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_high_confidence\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1830\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-8eb704b8766a9320\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1830\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: railway-app[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1830\\nTitle: Fix portal brand gate violations in LawnReportViewPage\\nBody:\\n## Problem\\n\\nThe `check:portal-brand` prebuild script was failing because `LawnReportViewPage.jsx` contained three `fontSize: 13` declarations \u2014 in the `StatusPill` component and the two section-header labels (\\\"What we'll keep an eye on\\\" and \\\"Right now in Southwest Florida\\\") \u2014 which are below the brand-mandated minimum of 14px. This blocked the entire build pipeline at the `BUILD_IMAGE` stage.\\n\\n## Solution\\n\\nBumped all three offending `fontSize: 13` values to `fontSize: 14` in `LawnReportViewPage.jsx`, bringing them into compliance with the portal brand brief. The `check:portal-brand` script will now pass and the build can proceed normally.\\n\\n### Changes\\n- **Modified** `client/src/pages/LawnReportViewPage.jsx`\\n\\n---\\n*Generated by [Railway](https://railway.com)*\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e2db22821bf57fd4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-0b8bf3f7428ad87e", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439886, "scanner": "foundry_dataset", "fingerprint": "ef11c49306f51a35d80eebbf8e7ff5c9230192aeb600477aec0abd086bee1d3e", "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": "wavespestcontrolfl/waves-customer-portal#1828", "human_labels": ["ui_workflow_gap"], "issue_number": "1828", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-0c007aeb518d9217", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1828\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1828\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1f7485224fdb95f0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1828\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1828\\nTitle: Harden Stripe.js loading across all 6 payment surfaces\\nBody:\\n## Problem (\\\"is it us?\\\")\\n\\nTwo customers in the last few days couldn't pay because the **pay page never loaded Stripe.js**:\\n- **Diana Hung** \u2014 WPC-2026-0142 ($315.96): *\\\"Failed to load Stripe\\\"* at `payment_form_init`. Form never rendered. **Still unpaid.**\\n- **Richard Stumpf** \u2014 reloaded the pay link **4\u00d7** in 10 min before getting through.\\n\\nBoth are faces of the same bug. Every payment surface **hand-rolled its own Stripe.js `<script>` injector**, and each had a fatal flaw:\\n\\n| Surface | Flaw |\\n|---|---|\\n| `PayPageV2`, `OnboardingPage` | Cached the load promise; on the **first** failure cached the **rejection forever** \u2192 page wedged until a full browser reload (reload is literally the only recovery \u2192 repeated reloads). |\\n| `AutopayCard`, `MobileManualCardSheet`, `PortalPage` | **No `onerror`** \u2192 a failed load hangs the `await` forever (permanent spinner). |\\n| `EstimateViewPage` | Reset on erro\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-92cf13607057ca91\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_h\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-7ee8be537a604211", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439885, "scanner": "foundry_dataset", "fingerprint": "78627751fd9c819c5c557a07713d59120ca3a9e4af671e46240d113ebac56baa", "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": "wavespestcontrolfl/waves-customer-portal#1827", "human_labels": ["api_integration_gap"], "issue_number": "1827", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-8f2b4f4e81bb28e5", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1827\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1827\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b5f5dae18e1cb1dd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1827\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1827\\nTitle: Stop duplicate admin notification on inbound customer SMS\\nBody:\\n## Problem\\n\\nInbound SMS from a **known customer to a location number** raised **two** \\\"Waves Admin\\\" push notifications for the same message (confirmed from a lock-screen screenshot: two notifications about the same inbound text from \\\"Tyler Levin\\\", 11m apart titles `\ud83d\udce8 New SMS / From: Tyler Levin` and `SMS from Tyler Levin`).\\n\\nTwo code paths both notify the owner for one inbound message:\\n- `triggerNotification('sms_reply', \u2026)` \u2014 the modern bell + web-push path (`twilio-webhook.js:444`) \u2192 title **\\\"SMS from {name}\\\"**\\n- `sendSMS(ADAM_PHONE, \\\"\ud83d\udce9 New SMS\u2026\\\", {messageType:'internal_alert'})` \u2014 legacy owner-SMS forward (`twilio-webhook.js:461`)\\n\\nThe legacy forward is an `internal_alert` aimed at an owner phone, which `twilio.js` `redirectInternalAdminSmsToNotification` now re-routes into the **same** admin push instead of a real text. So both paths land as an admin push \u2192 duplicate notification o\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-19915d0ddf90983b\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-b40c7723078fe644", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439884, "scanner": "foundry_dataset", "fingerprint": "3a2289c4ca9f4ddf20423f97cf8b681fb5bde8d3022d46d39a1e3f7c7eace279", "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": "wavespestcontrolfl/waves-customer-portal#1826", "human_labels": ["security_auth_secret"], "issue_number": "1826", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-53fbcb734550f6cb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1826\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1826\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-05d46096e9a738d5\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1826\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1826\\nTitle: Suppress client Stripe.js form-validation errors from bill payment alerts\\nBody:\\n## Problem\\n\\nClient-side Stripe.js **validation errors** (incomplete/invalid card number, CVC, expiry) were firing **\\\"Bill Payment Error\\\" admin notifications**. These are *typing-in-progress* events \u2014 Stripe.js blocks them in the browser before any PaymentIntent confirm, charge, or decline ever reaches Stripe \u2014 not payment failures.\\n\\n### Real-world trigger (found in prod 06-16)\\nInvoice **WPC-2026-0156** ($117, customer Richard Stumpf): customer hit \\\"Pay\\\" with a half-typed card number. The `/pay/:token/error` endpoint recorded:\\n\\n```\\nerror_code:    incomplete_number\\nerror_message: \\\"Your card number is incomplete.\\\"\\nstripe_type:   validation_error  (client)\\nphase:         payment_form_submit\\n```\\n\\nStripe confirmed `last_payment_error: none`, `latest_charge: none`, PI still `requires_payment_method` \u2014 i.e. nothing was ever attempted. Yet it raised an admin alert, which **drow\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c764c6dde61dbb77\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_g\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-7552bfa72aac1730", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439883, "scanner": "foundry_dataset", "fingerprint": "bd00b403c293750736b20f1c7d6433c3384d8bce2c5a7afdd1e1d83e32df55e2", "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": "wavespestcontrolfl/waves-customer-portal#1824", "human_labels": ["security_auth_secret"], "issue_number": "1824", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-a8444b022f8ea98b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1824\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1824\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9f469017a665f315\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1824\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1824\\nTitle: Suppress account.updated email for self-initiated portal edits\\nBody:\\n## Problem\\n\\nA customer received **~16 identical \\\"Your Waves account settings were updated\\\" emails in ~70 seconds** (Jun 16, 2:52\u20132:53 PM, jkelleher130@gmail.com).\\n\\nRoot cause: the `account.updated` template is a security-style *\\\"was this you?\\\"* notice (body: *\\\"If you did not make this change, reply to this email or contact Waves right away\\\"* \u2014 `migrations/20260521000003`). But every customer-facing settings route fires it on the customer's **own** edit, with the customer as the **recipient**, and the portal autosaves each field on a 1s debounce (`PortalPage.jsx` `PropertyTab.updateField`). One settings session therefore fans out one such email per saved field.\\n\\nThe idempotency key (`account.updated:<recipient>:<idHash>`) can't dedupe these: `idHash` bakes in `new Date()` + the specific changed fields, so distinct saves are intentionally distinct keys.\\n\\n## Fix (option #1 \u2014 suppres\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-0987fef2ea0d777f\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-52411ac0373bfb2e", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439882, "scanner": "foundry_dataset", "fingerprint": "bb22c88a692f22e8cd747f67074b8b2614cc56f209d815d1f294e96364602386", "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": "wavespestcontrolfl/waves-customer-portal#1823", "human_labels": ["ui_workflow_gap"], "issue_number": "1823", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-79aa370c964b405a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1823\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1823\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3b1e59191d276886\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1823\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1823\\nTitle: Merge lawn turf photos into the report gallery; drop redundant Service Photos on lawn visits\\nBody:\\n## Problem\\n\\nOn the service-completion panel (`CompletionPanel`), a **lawn visit** showed two photo-capture points that looked redundant to techs:\\n\\n1. **Lawn Assessment \u2192 \\\"Add turf photos\\\" (0/3)** + \\\"Analyze lawn\\\" \u2014 feeds AI turf scoring (`lawn_assessments` / `lawn_assessment_photos`) and the lawn scorecard on the customer report.\\n2. **\\\"Service Photos\\\" (0/5)** \u2014 generic upload that feeds the **customer report's photo gallery** (`service_photos`).\\n\\nThey write to **different tables and different report sections**, so simply deleting the bottom one would have stripped lawn reports of their photo gallery (and the typed-findings photo summary / missed-photo paths that read `service_photos`).\\n\\n## Change\\n\\nMake the **top turf capture the single capture point for lawn visits**, and route those photos into the gallery so nothing is lost:\\n\\n- **Client (`SchedulePage.j\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3bbd8c8afd9d6a94\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schema\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-bfb2331cf2704686", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439881, "scanner": "foundry_dataset", "fingerprint": "b8593d7670a11755d8656e46d32d22fb817bdcaf760115c375663346711f524c", "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": "wavespestcontrolfl/waves-customer-portal#1822", "human_labels": ["deployment_env_gap"], "issue_number": "1822", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a3651a020a4670a7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1822\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1822\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-7531bdd376449640\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1822\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1822\\nTitle: content: disable spoke blog network \u2014 blogs publish hub-only\\nBody:\\n## What & why\\n\\nOwner directive (2026-06-16): autonomous **blog posts** should publish only to the hub (`wavespestcontrol.com`) and never fan out to the spoke domains. Surfaced from the \\\"Most Dangerous Ants in Florida\\\" autonomous PR \u2014 tracing it showed a deliberately-built **spoke blog network** (Phase 2) that routes curated, per-spoke blog topics onto individual spoke domains.\\n\\nThis PR disables that lane. (Per the chosen scope, this is the *seeder-only* fix \u2014 publisher routing is left as-is; see open items.)\\n\\n## How it works today\\n\\n- `server/data/spoke-seed-topics-v1.json` holds 5 curated, Sarasota-specific blog topics, each pinned to `sarasotaflpestcontrol.com`.\\n- `spoke-seed-seeder.seedAll()` loads them into `opportunity_queue` tagged `spoke_seed=true, target_sites:[<spoke>]`.\\n- `content-brief-builder` threads `target_sites` onto the brief; `astro-publisher.resolveSpokeTarget()` th\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d2333addfda38846\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helic\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9871c0d4fc2b6ff5", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439880, "scanner": "foundry_dataset", "fingerprint": "ba0a6f1c337d4393b929db2ef7a9e396cd2267f3ee1cfbcf029aaca26830a8d4", "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": "wavespestcontrolfl/waves-customer-portal#1815", "human_labels": ["data_schema_persistence"], "issue_number": "1815", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.786, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-fd0c37d16a90d29d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1815\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: wavespestcontrolfl/waves-customer-portal#1815\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-50f875f0ca1c65c0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1815\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1815\\nTitle: [codex] Expose basic lawn pricing metadata\\nBody:\\n## Summary\\n\\nCloses the remaining lawn Basic metadata/UI gap from the #1807 Codex review.\\n\\n## Changes\\n\\n- Updates the admin Pricing Logic lawn bracket grid so Basic is labeled as the sold 4x tier instead of hidden.\\n- Updates the original Lawn V2 pricing-config seed metadata so fresh rebuilds no longer seed Basic as hidden.\\n- Adds a forward migration that upserts `pricing_config.lawn_pricing_v2.tiers` with Basic marked `customerFacing: true` and `hidden: false` for already-migrated environments.\\n\\n## Impact\\n\\nThe pricing engine and public estimate surfaces already sell the 4-application Basic tier. This keeps the DB-backed pricing metadata and admin pricing panel consistent with that contract.\\n\\n## Validation\\n\\n- `node --check server/models/migrations/20260615000007_lawn_basic_customer_facing_metadata.js`\\n- `npm test -- --runInBand server/tests/customer-pricing-ai-variants.test.js`\\n- `git diff --check`\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-abc9e9bc7ab411dc\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-0a05ad11f9c379bc", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439879, "scanner": "foundry_dataset", "fingerprint": "a6f484c3173caf643122cd072a633fa69677998da7d16c07b268a6f5a2e43d1c", "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": "wavespestcontrolfl/waves-customer-portal#1806", "human_labels": ["test_ci_gap"], "issue_number": "1806", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c851ae5edd21094e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1806\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: wavespestcontrolfl/waves-customer-portal#1806\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-eb5e98a065cdcd8b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1806\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1806\\nTitle: Sync client fallback one-time mosquito to server reprice band\\nBody:\\n## Problem\\n\\nA broad test run flagged a \\\"pre-existing\\\" one-time mosquito mismatch: an expectation of the old **225 / 275 / 425** band vs. the current **99 / 129 / 279**.\\n\\nTracing it: the **June 2026 mosquito reprice** (`20260606000001_mosquito_market_reprice`) dropped one-time mosquito into the SW-FL single-visit market band on the **server** (`constants.js` `ONE_TIME.mosquito` = 99/129/159/199/239/269, over-acre **+$40**/10k). All server tests were updated and pass on `main`.\\n\\nWhat was never updated is the **deprecated client preview/fallback engine** `client/src/lib/estimateEngine.js`, which still hardcoded the retired ~2\u00d7 band (225/275/325/385/425/475, over-acre **+$75**) \u2014 with **no test guarding it**, so it drifted silently. The number triple maps exactly:\\n\\n| Scenario | Old | New |\\n|---|---|---|\\n| SMALL base | 225 | **99** |\\n| STANDARD base | 275 | **129** |\\n| STANDARD + 2 stations | 4\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-b74ad854600e8230\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_vie\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-833c91cb0fe0fefb", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439878, "scanner": "foundry_dataset", "fingerprint": "90a6dfd10746c575a0b753fd586a4328d054b57304e87ded0827995f3f2dc8d2", "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": "wavespestcontrolfl/waves-customer-portal#1804", "human_labels": ["data_schema_persistence"], "issue_number": "1804", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-0b9ae279c0b3a7af", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1804\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: wavespestcontrolfl/waves-customer-portal#1804\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c455d83605eeb790\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1804\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1804\\nTitle: [codex] Retire legacy SMS onboarding and geofence flows\\nBody:\\n@codex review\\n\\n## Summary\\n- Retires legacy SMS templates for Tech Arrived, onboarding, and reschedule reply copy from the editable SMS template catalog.\\n- Removes the inactive customer onboarding flow, follow-up scheduler, onboarding email automations, and public /onboard route.\\n- Removes geofence prompt/notification processing surfaces while preserving historical database tables and data.\\n- Adds cleanup migrations to delete retired template rows/variants and mark/remove onboarding email automation records.\\n\\n## Impact\\n- Current estimate acceptance continues through invoice/pay-link, annual prepay, one-time booking, or confirmed recurring outcomes.\\n- Existing databases get cleanup through migrations instead of destructive table drops.\\n- Bouncie geozone events are logged and ignored rather than invoking geofence automation.\\n\\n## Validation\\n- npx jest server/tests/twilio-tech-en-route.te\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-2e544655bfa26143\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_h\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-13362b4f27f51b85", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439877, "scanner": "foundry_dataset", "fingerprint": "282ef7312895f651277a9f71830567efcb0cead7c4bda918179982aee79000f1", "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": "wavespestcontrolfl/waves-customer-portal#1801", "human_labels": ["data_schema_persistence"], "issue_number": "1801", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.723, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-d40053b85aa512e8", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1801\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: wavespestcontrolfl/waves-customer-portal#1801\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-6de7036d429f759f\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1801\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1801\\nTitle: [codex] Clean up retired SMS templates\\nBody:\\n## Summary\\n\\nClean up retired SMS templates and related sender mappings after auditing the SMS template catalog.\\n\\n- Remove retired New Lead, one-time quote follow-up, lead-intake, office-alert, and disabled contract SMS template rows from seed/canonical migrations.\\n- Add cleanup migrations for existing databases so retired template keys are deleted instead of resurfacing.\\n- Route one-time quote wizard follow-up texts through the regular booking invite template.\\n- Add a one-time quote-wizard booking source so one-time pest quote links do not create quarterly recurring bookings.\\n\\n## Impact\\n\\nOperators should see less SMS template clutter. One-time quote customers still receive the regular booking invite, but the booking flow now preserves one-time semantics for pest-family services.\\n\\n## Validation\\n\\n- `git diff --check`\\n- `npx jest server/tests/remove-dead-legacy-sms-templates-migration.test.js server/tes\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-76bbee9e28c861fd\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"rep\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d87d3e237d1b6dc1", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439876, "scanner": "foundry_dataset", "fingerprint": "f49c1fedaa2dad60f5202999838d5e36c20871bb98daf257e79d32935c7e9177", "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": "wavespestcontrolfl/waves-customer-portal#1799", "human_labels": ["api_integration_gap"], "issue_number": "1799", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.749, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-dc55ea170aee6f47", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1799\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: wavespestcontrolfl/waves-customer-portal#1799\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c627d49743d66be0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1799\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1799\\nTitle: [codex] Refine admin protocol reference labels\\nBody:\\n## What changed\\n- Removes the admin prepay protocol card and the WaveGuard intro sentence from the protocols tab.\\n- Renames the existing lawn, tree/shrub, pest, and termite protocol labels to the shorter protocol names.\\n- Adds Rodent, Mosquito, Palm Injection, Cockroach, and Bed Bug protocol programs to the admin protocols API and selector.\\n- Updates protocol matching so specialty service types resolve to the right protocol templates while preserving normal pest, termite, and tree/shrub routing.\\n\\n## Validation\\n- npm run build\\n- protocols.json parse check\\n- targeted protocol-matcher samples for rodent, mosquito, palm injection, cockroach, bed bug, termite, pest bait, and routine palm services\\n- git diff --check\\n\\n@codex please review the admin protocol reference changes.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-7d75ad73539b1ab6\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_b\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d77c377a1080e306", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439875, "scanner": "foundry_dataset", "fingerprint": "4b13b27a988390b695ab2c12e979797854c456b475e235e955631315d8b9e2a9", "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": "wavespestcontrolfl/waves-customer-portal#1798", "human_labels": ["agent_instruction_gap"], "issue_number": "1798", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-032906dfb90cf385", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1798\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1798\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-63be7a9c56ae918a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1798\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1798\\nTitle: Autonomous posts never use the AI image generator (image relevance)\\nBody:\\n## Why\\nThe AI image generator produces irrelevant **literal** images \u2014 e.g. a stone \\\"fairy ring\\\" for a fairy-ring **fungus** post \u2014 which shipped on blog shares before the brand-card switch (#1793). Pictures on autonomous posts must be relevant.\\n\\n## Change\\n- `publishToAll` gains a `noAiImage` opt-out (skips the `generateImage` fallback).\\n- Both autonomous paths set it: **RSS blog shares** and **studio campaigns**. They now use the on-brand card; if the card can't be rendered they go **text-only** rather than fall back to an irrelevant AI image.\\n- Admin/manual publishing is unaffected.\\n\\nNet: every autonomous post's image is the controlled, on-topic brand card (or none) \u2014 never a literal AI misfire.\\n\\nLocal Codex audit clean (P0:0/P1:0).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c2fcaba09306f154\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-98d32a90602fd1b6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439874, "scanner": "foundry_dataset", "fingerprint": "1dab02959503b9f226e6327888a9c962704e3a10f10c9d346e2f2028e08d8c04", "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": "wavespestcontrolfl/waves-customer-portal#1797", "human_labels": ["security_auth_secret"], "issue_number": "1797", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-1f44fe564253345b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1797\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1797\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-32e40453eb3e6d2b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1797\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1797\\nTitle: fix(blog): remove fact_checked_by editing surface from the admin blog editor\\nBody:\\n## What\\nFinal piece of the fact-check-attribution removal (after #1794 + astro #259). Removes the now-**inert** admin editing surface for `fact_checked_by`:\\n- the **\\\"Fact-Checked By\\\" input** + its **save-payload** field (`BlogPage.jsx`)\\n- `fact_checked_by` from the admin update **allow-list** (`admin-content-v2.js`)\\n\\nAfter #1794 the generator no longer publishes `fact_checked_by`, so this input only wrote a DB column that's no longer emitted. The editor now flows **Technical Review Date \u2192 Fact-Check Date**.\\n\\n## Kept\\n`fact_checked_at` (date) + `technically_reviewed` (Adam Benetti, FDACS JB351547). The `blog_posts.fact_checked_by` column stays (nullable, unused) \u2014 no migration.\\n\\n## Notes\\nThis is the change Codex proposed in its #1794 review; its cloud PR never landed on GitHub, so I implemented it directly (and verified: no dangling refs, the date field intact, admin \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-c1902503845a3b56\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_h\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1a504f2c867e18cd", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439873, "scanner": "foundry_dataset", "fingerprint": "c1dc1ddfee2af041c43a90e6f2a9d9d921cce36fac557f788f0183d8b11feee0", "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": "wavespestcontrolfl/waves-customer-portal#1796", "human_labels": ["security_auth_secret"], "issue_number": "1796", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-84a804eb1b00ca84", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1796\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1796\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-10775558dfd0b586\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1796\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1796\\nTitle: Enrich AI service-report copy with real per-customer grounding (v3 prompt)\\nBody:\\n## Why\\nThe \\\"Generate AI report\\\" copy on service completion read **stale and generic**. The model only ever saw the tech's free-text notes + product names \u2014 no history, no conditions, no season \u2014 so it fell back on boilerplate, and the two worked examples in the prompt had become de-facto templates (every report parroted *\\\"Today's service focused on\u2026\\\"*, *\\\"positioned to intercept\u2026\\\"*, *\\\"within 10\u201314 days\\\"*).\\n\\n## What\\n**Backend**\\n- New `server/services/service-report/report-copy-context.js` assembles real, per-customer grounding for the WHAT WE DID / WHAT WE FOUND copy: prior-visit report text (to vary from + detect recurring pests), pest-pressure trend, live weather + trailing 7-day rainfall, product label REI/rainfast/active-ingredient data, SW-Florida seasonality, turf type, WaveGuard plan, and pet/sensitivity flags. Every load is fail-soft.\\n- `generate-report` route \u2192\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-45fb4f9c80d27e3c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-052ad05f45ae5d1d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439872, "scanner": "foundry_dataset", "fingerprint": "409a5a3a81ea4b1af56c2fc8818914cdaf81e855afca5fb7260a829e0ce3b574", "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": "wavespestcontrolfl/waves-customer-portal#1792", "human_labels": ["runtime_failure"], "issue_number": "1792", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-1d63b7921ff1b2f4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1792\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: wavespestcontrolfl/waves-customer-portal#1792\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a8ae87e80ca0d374\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1792\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1792\\nTitle: Autonomous social: post once daily at 6:30 AM ET (fixed time)\\nBody:\\n## What\\nThe autonomous poster ran on an hourly cron + 24h cadence guard, so the daily post landed at whatever off-hour it was enabled (2:20 AM) and drifted ~1h later each day. Pin it to **once daily at 6:30 AM ET**.\\n\\n## Changes\\n- `scheduler.js`: `'20 * * * *'` (hourly) \u2192 `'30 6 * * *'` (6:30 AM `America/New_York`).\\n- `social-content-studio.js`: `intervalHours` is now a same-day **dedupe guard**, not the schedule, and is **clamped to 22h** \u2014 below the minimum gap between two daily ET ticks (23h across spring-forward DST) so the fixed daily fire always clears the guard even with a stale `=24` env. Default 20.\\n- `.env.example`: documents the daily schedule + interval-as-dedupe semantics.\\n- Test: interval clamp (24/23 \u2192 22, DST-safe; <22 preserved).\\n\\nThe advisory lock + `started`/`failed` claim dedup still prevent double-posts (restart/pod overlap, recent manual force, crash mid-publish).\\n\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-35c5c6cc2a95379a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1686c0c52d26ab39", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439871, "scanner": "foundry_dataset", "fingerprint": "8c38a404e893b1c1d646caddd4cf712d9271f89a285d35d76529fa1eae1e59cd", "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": "wavespestcontrolfl/waves-customer-portal#1790", "human_labels": ["security_auth_secret"], "issue_number": "1790", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-4fca97fb1002187d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1790\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1790\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1135a2676657999a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1790\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1790\\nTitle: chore(social): remove TikTok source from public social-feed\\nBody:\\nDrops TikTok from the `/api/public/social-feed` aggregator (no integration for now): removed fetchTikTok + the OAuth token refresh/storage, the TIKTOK_* constants, the runners entry, and the now-unused `db`/`runExclusive` imports; updated the AGENTS.md allowlist + header doc. Endpoint now serves Instagram + Facebook + Google + YouTube; `sources` no longer reports tiktok. Pairs with astro #255/#256. Codex pre-push clean (P0 0, P1 0).\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-eaafa94281cc547e\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-4aeffa34a74a78a9", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439870, "scanner": "foundry_dataset", "fingerprint": "cc5d4fca1fb313516a9f1a8b257303abfe101407fd7f8581be8f60644459552a", "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": "wavespestcontrolfl/waves-customer-portal#1789", "human_labels": ["agent_instruction_gap"], "issue_number": "1789", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-3f7220d489c548a6", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_high_confidence"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1789\nOutcome: claimed_resolved_unverified\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1789\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-4082e65a3026a6c3\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1789\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1789\\nTitle: GBP-specific 4:3 social card image (no center-crop)\\nBody:\\n## What\\nCompletes per-platform image sizing. The publish path shared one **square (1080\u00d71080)** image across Instagram/Facebook/GBP, but Google Business Profile can **center-crop a square to 4:3** \u2014 clipping the card's logo (top) and CTA (bottom).\\n\\n## Changes\\n- The studio autonomous publish path renders a second, **GBP-specific 4:3 (1200\u00d7900)** card when GBP is among the run's channels (alongside the square for IG/FB) and passes it as `gbpImageUrl`.\\n- `publishToAll` accepts an optional `gbpImageUrl`; the GBP post loop prefers it and falls back to the shared square when none is supplied \u2014 so the RSS/manual paths are unchanged. Backward-compatible.\\n\\nThe renderer's per-platform sizing (from #1785) is now used end-to-end: **IG/FB \u2192 1:1, GBP \u2192 4:3.**\\n\\nLocal Codex pre-push audit clean (P0:0/P1:0); `jest` green.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f1ca7a7ecf29c614\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schemas_helicopter_view\"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1f2ddc8b4c46e1e4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439869, "scanner": "foundry_dataset", "fingerprint": "8e659c069984a54f52153fff4527ead09a84857bb307ecff39fe06acfd76831d", "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": "wavespestcontrolfl/waves-customer-portal#1788", "human_labels": ["test_ci_gap"], "issue_number": "1788", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-f36cee7cc261420c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1788\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: wavespestcontrolfl/waves-customer-portal#1788\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'test_ci_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ad70a7724f3130cd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1788\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1788\\nTitle: docs(backlink): M3c Hermes outreach auto-draft skill\\nBody:\\n## What\\n\\n**M3c** of the Backlink Manager \u2014 the Hermes **outreach auto-draft** skill, authored as a version-controlled doc for the Hostinger Skills tab. Completes the outreach lane: the agent fills the approval queue, a human approves + the portal sends.\\n\\n- **M3a** (#1424) = claim/report contract \u00b7 **M3b** (#1781 + #1783) = approval-gated send valve + UI \u00b7 **M3c** (this) = the agent skill that drafts.\\n\\n## How it works\\n\\nThe skill drives the existing worker contract \u2014 **no new code**:\\n1. `GET \u2026/backlink-worker/claim?type=outreach&n=5` (gated by `GATE_LINK_OUTREACH`; empty + note when off \u2192 stop).\\n2. Per prospect: research the target site (Oxylabs web-search + HTTP \u2014 no browser) to find the editorial/resources/partnerships **recipient** and a genuine **angle**; compose a short, **one-to-one** email using the `business_profile` NAP verbatim.\\n3. `POST \u2026/backlink-worker/report` with `outcome:\\\"drafted\\\"` + \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-701f9f8ca5f96d19\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-03f29481999805f5", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439868, "scanner": "foundry_dataset", "fingerprint": "293bc3fcdb286b547b9285589652fd20ea41de390a273c3f9659d9dc3dd3f840", "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": "wavespestcontrolfl/waves-customer-portal#1786", "human_labels": ["security_auth_secret"], "issue_number": "1786", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-57effa9fe6415497", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1786\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1786\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-9d0c2f0fb2337838\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1786\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1786\\nTitle: feat(social): public social-feed endpoint (IG/FB/Google/YouTube/TikTok)\\nBody:\\n## What\\n\\nNew cached, CORS-allowed (existing `www` allowlist), **read-only** public endpoint `GET /api/public/social-feed` that aggregates recent posts across every channel we hold tokens for and normalizes them to a single card shape `{ platform, caption, postedAt, postUrl, image, video, location }`:\\n\\n- **Instagram** \u2014 Graph API `/{ig-user-id}/media` (`FACEBOOK_ACCESS_TOKEN`)\\n- **Facebook** \u2014 Graph API `/{page-id}/posts`\\n- **Google** \u2014 GBP `localPosts` per configured location (new read-only `GoogleBusinessService.listLocalPosts`; **LIVE state only**, `searchUrl` gives a real \\\"View Post\\\" link)\\n- **YouTube** \u2014 channel RSS (no key; channel id resolved from the `@handle`)\\n- **TikTok** \u2014 Display API `/v2/video/list/` (rotating refresh token persisted in `system_settings`)\\n\\n## Why\\n\\nBacks the marketing site's new `/social` Live Updates page (companion PR in `wavespestcontrol-as\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-351d6319a135d12c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-e2e4a883a0fa5a1d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439867, "scanner": "foundry_dataset", "fingerprint": "b67a4d590be8844ba3cb4c11cfc4f645be8306074bc3e2c2399c6f312cfa1de0", "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": "wavespestcontrolfl/waves-customer-portal#1785", "human_labels": ["deployment_env_gap"], "issue_number": "1785", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c932385e01f5c761", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1785\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: wavespestcontrolfl/waves-customer-portal#1785\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-386d057f8a57bc23\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1785\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1785\\nTitle: Brand-accurate social cards + per-platform sizing\\nBody:\\n## What\\nRebrands the Social Content Studio card renderer to the customer-facing **wavespestcontrol.com** brand and adds per-platform image sizing.\\n\\nThe cards were off-brand: **teal-everywhere + Arial + muted gold**. The brand (mirror of the live Astro site in `client/src/theme-brand.js`) is **Waves Blue `#009CDE` + Gold `#FFD700`** on warm **Sand `#FEF7E0`** with **navy `#1B2C5B`** headings \u2014 and the brand brief *explicitly forbids teal*.\\n\\n## Changes (`server/services/social-card-renderer.js`)\\n- Brand palette + Waves-Blue rail + blue eyebrow pill + navy headline + the brand **gold-pill / navy-offset / UPPERCASE CTA** identity.\\n- Embeds the real **mascot logo** (`waves-logo-2026.png`, downscaled + cached) via an `<image>` data URI (librsvg renders those reliably), with a text-wordmark fallback.\\n- Brand font stack (Anton / Montserrat / Inter) named first with strong fallbacks. *Note: sharp's libr\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-659123e55e2d9099\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helico\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-0a6493c319a12394", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439866, "scanner": "foundry_dataset", "fingerprint": "e279a5dd569e1539c965d0a8ca18f15d9d31d70bda19bd31e7d5da2531cd08ae", "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": "wavespestcontrolfl/waves-customer-portal#1782", "human_labels": ["data_schema_persistence"], "issue_number": "1782", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-834c6ab8d965ae4b", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1782\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: wavespestcontrolfl/waves-customer-portal#1782\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-936ac4c9c83f7aea\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1782\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1782\\nTitle: [codex] Add lawn diagnostic analyze route\\nBody:\\n@codex\\n\\n## Summary\\n- Adds isolated `lawn_diagnostics` and `lawn_diagnostic_photos` tables for the new diagnostic report flow.\\n- Adds authenticated `POST /api/tech/lawn-diagnostic/analyze` for analyze-only report contract generation.\\n- Adds the v0.2 lawn diagnostic report contract builder with input sufficiency, DB-authoritative label constraints, structured reconciliation flags, watering sequencing, and QA guardrails.\\n- Updates the diagnostic plan docs to reflect the completed analyze route and remaining persist/send/UI work.\\n\\n## Validation\\n- `npx jest tests/lawn-diagnostic-report.test.js tests/tech-lawn-diagnostic-route.test.js --runInBand`\\n- `node -c server/services/lawn-diagnostic-report.js`\\n- `node -c server/routes/tech-lawn-diagnostic.js`\\n- `node -c server/models/migrations/20260615000001_lawn_diagnostics.js`\\n- `git diff --check`\\n- Push hook Codex review: P0 0 / P1 0\\n\\n## Notes\\n- `npx knex mig\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-bf20f0c6de6be551\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"rep\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-c46c8d88c448f106", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439865, "scanner": "foundry_dataset", "fingerprint": "561b2451712d9383e5d68490e1914ef98713ab09ff89533eaabe9a5ec5100f07", "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": "wavespestcontrolfl/waves-customer-portal#1780", "human_labels": ["deployment_env_gap"], "issue_number": "1780", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.737, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-45b044357867e85e", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1780\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: wavespestcontrolfl/waves-customer-portal#1780\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-75d38a6e0b2d3ef7\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1780\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1780\\nTitle: [codex] Schedule call replay eval\\nBody:\\nSummary\\n- add a reusable runReplayVariance() path so the reviewed-call replay can run programmatically without parsing CLI output\\n- add a scheduled call extraction replay eval service with retry-once semantics and admin eval_regression notifications\\n- register GATE_CALL_REPLAY_EVAL and a Monday 3:40 AM ET cron slot, plus npm/docs for manual runs\\n\\nWhy\\n- PR #1775 made the reviewed call fixture stable; this turns it into an ongoing production regression check for call extraction routing/scheduling drift.\\n\\nValidation\\n- node -c on touched JS files\\n- jest tests/scheduler-content-registry-maintenance.test.js tests/call-extraction-replay-eval.test.js tests/replay-call-extraction-variance.test.js tests/call-extraction-eval-fixtures.test.js tests/incident-eval.test.js --runInBand\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-2d0a08c6638b947a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-9f4c9855440455a2", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439864, "scanner": "foundry_dataset", "fingerprint": "4d1ab017e171c79ffa7868b1aa7f266fa9d107de64fc9a9034ac93286921a6d6", "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": "wavespestcontrolfl/waves-customer-portal#1777", "human_labels": ["runtime_failure"], "issue_number": "1777", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-2b10c520f637fe68", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1777\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: wavespestcontrolfl/waves-customer-portal#1777\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-5c24a977b688f767\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1777\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1777\\nTitle: Per-platform social posting failure alerts\\nBody:\\n## Problem\\nThe social posting failure alert only fired when the last 3 **posts** all failed. But a post's `status` is `published` if **any** platform succeeds \u2014 so a single broken platform (Instagram, dead on auth since ~05-29) was masked by Facebook + GBP succeeding on the same posts, and never alerted. It went unnoticed for ~2 weeks (the gap surfaced during the 06-14 social audit / IG token fix).\\n\\n## Fix\\nDerive each platform's outcome from the per-platform results already stored in `platforms_posted`, and alert when any one platform's last `ALERT_THRESHOLD` (3) **attempts** all failed.\\n\\n- New pure helper `buildSocialFailureAlert(rows)` (exported, fully unit-tested) computes the broken-platform set:\\n  - Skipped / disabled / dry-run entries are ignored (not failures).\\n  - A recent success resets the streak.\\n  - GBP is multi-location \u2192 a post counts as success if **any** location posted, fail only if **ev\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-379471cb969b8217\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1af9233bd2aea0a2", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439863, "scanner": "foundry_dataset", "fingerprint": "1e70a59819c72bd38d63197ff773b6bea9bcb702a029ff157ff3c6533adde1db", "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": "wavespestcontrolfl/waves-customer-portal#1776", "human_labels": ["runtime_failure"], "issue_number": "1776", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-40f5ed7f33baa01f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1776\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: wavespestcontrolfl/waves-customer-portal#1776\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-bb9df343771eb6b8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1776\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1776\\nTitle: fix(content-engine): spoke posts must not emit {{tokens}} (crashes .mdx builds)\\nBody:\\n**Found by the live proof of #1772.** The first generated spoke post (`carpenter-ants-sarasota`, Astro PR #249) crashed the spoke build with `ReferenceError: brandName is not defined`.\\n\\n**Root cause:** autonomous posts are written as `.mdx`, where `{{brandName}}` is parsed as a **JS expression**, not a token (`remark-token-substitution` only rewrites `.md` text nodes). So it reaches the build as an undefined reference and crashes it \u2014 parking the PR after a full generation spend. My spoke binding instruction wrongly told the writer to \\\"use the `{{brandName}}` token\\\"; the gold seed and every existing `.mdx` post use neutral first-person phrasing instead.\\n\\n**Fixes:**\\n- **spoke-seed-seeder** \u2014 the BRAND binding now **forbids any `{{...}}` token** and tells the writer to use first person (\\\"our team\\\", \\\"we\\\"); the only brand name allowed is the hub brand inside the single hu\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-367d5a33f475b645\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopte\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-d45cd65fa37fa977", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439862, "scanner": "foundry_dataset", "fingerprint": "90667f61d34c2c0c3d6c42e81e4bc7a63b3d299bd62d4f5d12e8125a03fc9882", "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": "wavespestcontrolfl/waves-customer-portal#1775", "human_labels": ["ui_workflow_gap"], "issue_number": "1775", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-422624f14f1788a4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1775\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1775\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-73450aef4e6ffe06\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1775\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1775\\nTitle: [codex] Stabilize call replay fixture expectations\\nBody:\\nSummary\\n- add current_scheduling_status support to replay fixture expectations\\n- make the missed-booking fixture assert confirmed scheduling instead of a model-variable auto-route result\\n- make the short missing-address fixture assert deterministic address blockers instead of the model-emitted address_unverifiable flag\\n\\nWhy\\n- post-merge Railway replay showed the reviewed fixture could fail due to model-variable triage flags even when the durable behavior was correct\\n- the fixture should catch real regressions without depending on nondeterministic model flag selection\\n\\nValidation\\n- JSON.parse on server/fixtures/call-extraction-eval/reviewed-calls.json\\n- node -c server/scripts/replay-call-extraction-variance.js\\n- node -c server/tests/replay-call-extraction-variance.test.js\\n- node -c server/tests/call-extraction-eval-fixtures.test.js\\n- jest tests/replay-call-extraction-variance.test.js tests/call-ex\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5072752eab04eec4\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2, \"repo_has_schema\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-cde148de71877ab3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439861, "scanner": "foundry_dataset", "fingerprint": "f96dd98e2b7963a1adea095b7f5d43f8bcfd989a7a3a62c6a55951ad3b72bedd", "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": "wavespestcontrolfl/waves-customer-portal#1773", "human_labels": ["security_auth_secret"], "issue_number": "1773", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.756, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a87d4d7076f3469a", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1773\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1773\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0c792f109f48b164\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1773\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1773\\nTitle: [codex] Harden annual prepay protocol\\nBody:\\n## Summary\\n- Hardens annual-prepay acceptance so public annual-prepay setup creates the invoice and renewal term atomically with acceptance.\\n- Adds manual annual-prepay admin actions that create a pending annual-prepay invoice/term without texting, emailing, auto-scheduling, or auto-sending the invoice.\\n- Surfaces annual-prepay status in Customer 360, Pay V2, and Admin Invoices, and adds the Prepay Protocol to Protocol Reference.\\n- Adds annual-prepay term CHECK constraints and keeps prepaid-series stamps off rescheduled rows.\\n\\n## Root Cause\\nAnnual prepay state was split across estimate acceptance, invoice creation, renewal terms, and admin visibility. Failures could leave accepted customers without a trustworthy prepay term/invoice, and manual workflows did not clearly separate review-only draft creation from outgoing communication.\\n\\n## Validation\\n- `npx jest tests/invoice-tier-discounts.test.js tests/es\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-e827c01703592574\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_hel\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-2f3d916df18a0f65", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439860, "scanner": "foundry_dataset", "fingerprint": "5210d34864dce9170b9bbe5307a8d15cf4f53132f3df366af43ed925f54c42ff", "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": "wavespestcontrolfl/waves-customer-portal#1770", "human_labels": ["security_auth_secret"], "issue_number": "1770", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-e0dc29ecec076848", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1770\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1770\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e3ea63c04e32c8c3\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1770\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1770\\nTitle: Turf height-of-cut gauge OCR cross-check + admin review queue (PR2)\\nBody:\\n## What\\n\\nPR2 of the turf height-of-cut feature. PR1 (#1764) shipped the manual capture + gauge photo on lawn service completion. This adds an **async, dual-model OCR cross-check** of the gauge photo and an **admin review queue** for the cases where the read diverges or fails.\\n\\nManual entry stays the source of truth on every customer surface \u2014 OCR is **QA + tamper-evidence only**. It never overwrites the manual value and never blocks completion.\\n\\n## How\\n\\n- **`server/services/turf-height-ocr.js`** \u2014 reads the gauge photo with Claude VISION + Gemini, builds a pure consensus (mean / single-model discount / disagreement penalty), and reconciles against the tech's manual reading \u2192 `verified | discrepancy | ocr_failed`. Fail-soft and fire-and-forget.\\n- **`server/routes/admin-dispatch.js`** \u2014 triggers the cross-check after the visit durably commits. Runs on first-run **and** durable\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-0fd04c1481eeaa20\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_heli\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-28eea51e58807c5f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439859, "scanner": "foundry_dataset", "fingerprint": "b48226bcd85fa5d8b0680d7de72728bfe3c995d1e44da721b76e725da1b88895", "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": "wavespestcontrolfl/waves-customer-portal#1768", "human_labels": ["security_auth_secret"], "issue_number": "1768", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-f922b7235f1fdbf6", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1768\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1768\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c75fbe63b6ce28a8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1768\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1768\\nTitle: Harden call extraction replay evals\\nBody:\\n## Summary\\n- make replay-call-extraction-variance continue after individual call replay errors and include replay error counts in the summary\\n- add a reviewed call extraction eval fixture for the five June 2026 manual-review calls\\n- normalize ordinal address tokens like 39TH to 39th and compound suffixes like Street Circle to St Cir\\n\\n## Validation\\n- node -c server/scripts/replay-call-extraction-variance.js\\n- node -c server/utils/address-normalizer.js\\n- node -c server/tests/replay-call-extraction-variance.test.js\\n- node -c server/tests/call-extraction-eval-fixtures.test.js\\n- jest tests/replay-call-extraction-variance.test.js tests/call-extraction-eval-fixtures.test.js tests/address-normalizer.test.js tests/intake-normalize.test.js tests/call-pipeline-v2-gating.test.js tests/call-recording-processor-guards.test.js tests/call-extraction-v2.test.js tests/call-extraction-v2-shadow.test.js tests/call-route-decis\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-fa3dd9f3283e9d4c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_hel\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-74bb3ac001df310a", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439858, "scanner": "foundry_dataset", "fingerprint": "2ae544dd454e2a5327a37000a4d26bc45b3183f6d175594e7c51fe5937582868", "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": "wavespestcontrolfl/waves-customer-portal#1767", "human_labels": ["human_feedback_general"], "issue_number": "1767", "thread_label": "thread_needs_classification", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.627, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-04a15ab39a447fff", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 3, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1767\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_weak_supervision\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#1767\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_needs_classification\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'human_feedback_general': 1}\nPolarities: {'neutral': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-ecd66a5b03dfd0b2\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1767\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1767\\nTitle: Fix Google Ads mutation payloads\\nBody:\\n## Summary\\n- send Google Ads mutateResources updates with entity/operation/resource payloads\\n- cover enable, pause, and budget update mutation payloads\\n\\n## Tests\\n- npx jest tests/google-ads-sync.test.js tests/google-call-bridge.test.js --runInBand\\n- npm run build\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-d3895d3e2406d665\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-df9148bf5ec1aba2", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439857, "scanner": "foundry_dataset", "fingerprint": "1665b1d17ebff2c641e177fbae96fc4a5778e8a6c107c99f5e5496c3606c87ea", "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": "wavespestcontrolfl/waves-customer-portal#1763", "human_labels": ["runtime_failure"], "issue_number": "1763", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-72d8400bdba92816", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1763\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: wavespestcontrolfl/waves-customer-portal#1763\nRepo: wavespestcontrolfl/waves-customer-portal\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: 0\nLabels: {'runtime_failure': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b03d44d5eb4adfdc\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1763\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1763\\nTitle: Attach images to GBP posts (fix text-only Google Business posts)\\nBody:\\n## What\\n\\nGoogle Business Profile posts were going out **text-only** because `postToGBP` was called without its 4th `imageUrl` argument in both posting paths.\\n\\nIn the newsletter/RSS `publishToAll` path an image is already generated and uploaded to the CDN (for Instagram) \u2014 it was just never handed to GBP. So every Google post rendered as a flat text card, which is the symptom Adam reported on the Parrish *\\\"Good News Pest Solutions\\\"* comparison post: \\\"no image, and the 'Learn more' link is easy to miss.\\\" (The CTA was in fact present and resolves \u2014 the bare text card just buries it.)\\n\\n## Changes\\n\\n- **`social-media.js` (`publishToAll`)** \u2014 reuse the run's already-uploaded `generatedImageUrl` for the GBP loop (the same public CDN URL Instagram uses). Falls back to text-only when no image URL exists.\\n- **`autonomous-runner.js` (`_handleGbpPostAction`)** \u2014 best-effort generate + upload an \"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-4da6f626ae228d94\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicop\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-2f3b6893ae6af6fd", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 439856, "scanner": "foundry_dataset", "fingerprint": "b55b45ead1a1a49a5721b75f0265a7d264ce065416ee63cf1efeed951fc1e344", "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": "wavespestcontrolfl/waves-customer-portal#16", "human_labels": ["ui_workflow_gap"], "issue_number": "16", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "ambiguous_needs_more_evidence", "source_backed": true, "max_confidence": 0.662, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-b9ee6f7b2162d793", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: assumption_checks\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#16\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#16\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: ambiguous_needs_more_evidence\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-32560b79d3da3701\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/16#issuecomment-4285969371\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/16#issuecomment-4285969371\\nTitle: \\nBody:\\nSuperseded \u2014 commit 3692ffe merged directly to main (same content as this branch's 5171be4 cherry-pick). Follow-up work continued in #18 (admin-mobile-square-polish). Nothing left to merge here.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-5d3dc0f25a171d90\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-assumption_checks-1e104a0edb052cd2", "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": "wavespestcontrolfl/waves-customer-portal", "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: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460697, "scanner": "foundry_dataset", "fingerprint": "584b7a91887aa7d37fa41afd7ba04c7c558b977dbf40266eec274a1dd7de42b4", "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": {"keys": ["verification_or_tests", "bug_fix", "claimed_resolved_unverified", "agent_instruction_gap", "api_integration_gap", "human_reported_issue_then_fix_attempt", "comment_has_related_commit_context", "ambiguous_needs_more_evidence", "human_reported_issue_then_failing_ci_fix_attempt", "claimed_resolved_with_failing_ci_signal", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "build_install_failure", "test_ci_gap", "ci_failure_signal", "human_reported_issue_then_verified_fix_attempt", "claimed_resolved_with_verification_signal"], "count": 17, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 12, "ambiguous_needs_more_evidence": 6, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 108, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 10, "thread_has_comment": 10, "comment_chain_has_ci": 2, "chain_has_link_quality": 12, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 10, "comment_chain_links_commit": 50, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 10}, "node_count": 55, "node_types": {"repo": 1, "commit": 18, "thread": 1, "comment": 10, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 10}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#296", "issue_number": "296", "quality_tiers": {"weak_supervision": 12}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-ace00bb8615c287e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#296\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 296\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 55\nEdges: 108\nNode types: {'commit': 18, 'link_quality': 12, 'comment': 10, 'comment_chain': 10, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 50, 'chain_has_link_quality': 12, 'thread_has_comment': 10, 'thread_has_comment_chain': 10, 'comment_has_chain': 10, 'issue_chain_has_comment_chain': 10, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'bug_fix': 8, 'claimed_resolved_unverified': 6, 'agent_instruction_gap': 4, 'api_integration_gap': 4, 'human_reported_issue_then_fix_attempt': 4, 'comment_has_related_commit_context': 3, 'ambiguous_needs_more_evidence': 3, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'claimed_resolved_with_failing_ci_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'build_install_failure': 1, 'test_ci_gap': 1, 'ci_failure_signal': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 12, 'ambiguous_needs_more_evidence': 6, 'claimed_resolved_with_failing_ci_signal': 4, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 12}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6b39587091ff10d0", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460696, "scanner": "foundry_dataset", "fingerprint": "bb6b7e631e52079cdb98663d2d2ca400a9dc8de86c2702b41e6ca8156a89088e", "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": {"bug_fix": 2, "test_or_ci": 10, "test_ci_gap": 1, "api_or_backend": 1, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 76, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 13, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 13, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1861", "issue_number": "1861", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-8547dca8a76c2c56", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 50, "api_or_backend": 5, "schema_or_data": 5, "ui_or_frontend": 5}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1861\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1861\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1861\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1861\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 76\nNode types: {'pr_file': 13, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 13, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'test_or_ci': 10, 'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1, 'ui_or_frontend': 1, 'schema_or_data': 1, 'api_or_backend': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e58cc11eac8255a4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460695, "scanner": "foundry_dataset", "fingerprint": "986fcc2d8d4982662dc135cab02149f2ad18b9173ce19cbc67d59d5f042ee3db", "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": {"bug_fix": 4, "test_or_ci": 2, "test_ci_gap": 1, "api_or_backend": 18, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 4, "ci_failure_signal": 1, "api_integration_gap": 10, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 13, "human_reported_issue_then_failing_ci_fix_attempt": 11}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_failing_ci_signal": 26}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {"ci_failure_signal": 22}, "synthetic": false, "edge_count": 297, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 11, "thread_has_comment": 1, "thread_touches_file": 26, "comment_chain_has_ci": 11, "thread_has_pr_review": 10, "chain_has_link_quality": 13, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 11, "comment_chain_links_commit": 55, "comment_chain_touches_file": 132, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 11}, "node_count": 73, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 26, "pr_review": 10, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 13, "comment_chain": 11}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1860", "issue_number": "1860", "quality_tiers": {"high_confidence": 13}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-3563fd619c9c804d", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 28, "api_or_backend": 252, "docs_or_claims": 14, "schema_or_data": 14, "ui_or_frontend": 56}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1860\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1860\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1860\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1860\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 73\nEdges: 297\nNode types: {'pr_file': 26, 'link_quality': 13, 'comment_chain': 11, 'pr_review': 10, 'commit': 7, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 132, 'comment_chain_links_commit': 55, 'thread_touches_file': 26, 'chain_has_link_quality': 13, 'issue_chain_touches_file': 12, 'thread_has_comment_chain': 11, 'comment_has_chain': 11, 'comment_chain_has_ci': 11, 'issue_chain_has_comment_chain': 11, 'thread_has_pr_review': 10, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 18, 'claimed_resolved_with_failing_ci_signal': 13, 'human_reported_issue_then_failing_ci_fix_attempt': 11, 'api_integration_gap': 10, 'ui_or_frontend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 26}\nQuality tiers: {'high_confidence': 13}\nCI labels: {'ci_failure_signal': 22}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2facfcb44635fc4f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460694, "scanner": "foundry_dataset", "fingerprint": "e88fd44e07ba1414bf05bdc1e6ec23fbd8e87eb9e285d8626709ca44da693bfb", "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": {"bug_fix": 4, "test_ci_gap": 1, "api_or_backend": 6, "schema_or_data": 1, "ui_or_frontend": 3, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 88, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 10, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 33, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 10, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1849", "issue_number": "1849", "quality_tiers": {"high_confidence": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a2cd1fb30cc2c374", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 36, "schema_or_data": 6, "ui_or_frontend": 18}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1849\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1849\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 88\nNode types: {'pr_file': 10, 'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 30, 'comment_chain_links_commit': 15, 'thread_touches_file': 10, 'issue_chain_touches_file': 10, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 6, 'bug_fix': 4, 'claimed_resolved_with_failing_ci_signal': 4, 'ui_or_frontend': 3, 'verification_or_tests': 3, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'high_confidence': 5}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2973fbe6cbb22ea8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460693, "scanner": "foundry_dataset", "fingerprint": "dedf493836538c3aea765aa0bcf0ed00f2fd3d6a917ab03a34c56a728e06f6dd", "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": {"bug_fix": 1, "test_ci_gap": 1, "verification_or_tests": 4, "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": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1834", "issue_number": "1834", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-33b7a8882969efa9", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1834\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1834\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1834\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1834\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-380a3ada292d9bee", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460692, "scanner": "foundry_dataset", "fingerprint": "2a4af6524643d1b1fe2f8d2b758a906fb5e158e90c5e0f467c5ce177c4c38ad5", "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": {"bug_fix": 3, "test_ci_gap": 1, "verification_or_tests": 2, "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": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1809", "issue_number": "1809", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-218525463e75aacd", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1809\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1809\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1809\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1809\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0c38c106fb009fc7", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460691, "scanner": "foundry_dataset", "fingerprint": "9455cb02e28397780a62e075ea5a79d60eb4872a64ed94f5ae3ff0afd365a33b", "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_ci_gap": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1806", "issue_number": "1806", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4127e3aa755c07af", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1806\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1806\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1806\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1806\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e06dc6e74ea72d41", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 460690, "scanner": "foundry_dataset", "fingerprint": "df89a10d58232ebca2d67887e011ae4e6c752c5f7c3ad69c324c272a28ec02b8", "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_ci_gap": 1, "verification_or_tests": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1788", "issue_number": "1788", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-d578c7d8019599dc", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1788\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1788\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1788\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1788\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 5, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'comment_has_related_commit_context': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-9c730a462f344b41", "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": "wavespestcontrolfl/waves-customer-portal", "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: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454030, "scanner": "foundry_dataset", "fingerprint": "a34aaa36ec2cbfd4fc57559a91cb67905c9ad328d6968c674846dd88ebc3e904", "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": {"bug_fix": 3, "verification_or_tests": 6, "human_feedback_general": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#340", "issue_number": "340", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-f51a0b1ac49e27a9", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#340\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#340\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#340\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 340\nGraph consistency label: weak_supervision_needs_review\nNodes: 21\nEdges: 26\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 6, 'ambiguous_needs_more_evidence': 4, 'bug_fix': 3, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'data_schema_persistence': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6eef3bd7c6ce7b51", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454029, "scanner": "foundry_dataset", "fingerprint": "6bef21bbe7f87d8889e0fe60182c91d9054b2e000f4ae6a9fc8c7a296525cea9", "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": {"bug_fix": 7, "ci_failure_signal": 1, "agent_instruction_gap": 2, "verification_or_tests": 5, "human_feedback_general": 1, "data_schema_persistence": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "comment_chain_has_ci": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 20, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 31, "node_types": {"repo": 1, "commit": 12, "thread": 1, "comment": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#333", "issue_number": "333", "quality_tiers": {"weak_supervision": 6}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a90d6467532deed8", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#333\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 333\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 31\nEdges: 47\nNode types: {'commit': 12, 'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 20, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 7, 'verification_or_tests': 5, 'claimed_resolved_unverified': 4, 'agent_instruction_gap': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'ambiguous_needs_more_evidence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'ambiguous_needs_more_evidence': 2, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 6}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-29b0abd39dea7c3f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454028, "scanner": "foundry_dataset", "fingerprint": "c2abad6a7f11baba96e6f3b7cdd55b6083b6fdce1cb6f8a2778229b84c5dce03", "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": {"bug_fix": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 7, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#328", "issue_number": "328", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-4259ca62462b8e89", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#328\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 328\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'bug_fix': 1, 'ci_failure_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0282fba2ebbe1cde", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454027, "scanner": "foundry_dataset", "fingerprint": "2fcce44a5c100f7f89003cb7e119d358798f11dfb387c4bb9364f08b5697af8c", "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": {"bug_fix": 3, "runtime_failure": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 4, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#324", "issue_number": "324", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-67a9b65b23a17c64", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#324\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#324\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#324\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 324\nGraph consistency label: supported_by_verification_signal\nNodes: 19\nEdges: 26\nNode types: {'commit': 7, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 4, 'bug_fix': 3, 'human_reported_issue_then_verified_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'runtime_failure': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 8}\nQuality tiers: {'weak_supervision': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-5e2789cf9ebba5f6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454026, "scanner": "foundry_dataset", "fingerprint": "d21ffb91941fd895070851c03d5fd58a0ba61798dc76099188505267b89e1609", "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": {"verification_or_tests": 6, "human_feedback_general": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 18, "node_types": {"repo": 1, "commit": 6, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#308", "issue_number": "308", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-9c1dc7811849f511", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#308\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#308\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#308\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 308\nGraph consistency label: weak_supervision_needs_review\nNodes: 18\nEdges: 26\nNode types: {'commit': 6, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 6, 'ambiguous_needs_more_evidence': 4, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'data_schema_persistence': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6cec19aaf2762057", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454025, "scanner": "foundry_dataset", "fingerprint": "751ca8257b47768407d8135887427a0c0fc01f6cf6223e807048c60de9d53514", "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": {"bug_fix": 3, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#297", "issue_number": "297", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-502caff5c4e6802a", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#297\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#297\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#297\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 297\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-c58b5ca5453d64e9", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454024, "scanner": "foundry_dataset", "fingerprint": "c7c15e0f65ed00e2566527336366f3e7eafa2251e865e26614135bad6c4969c0", "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": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 37, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "comment_chain_has_ci": 1, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 26, "node_types": {"repo": 1, "commit": 10, "thread": 1, "comment": 3, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#295", "issue_number": "295", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-48ae248c5f4f1aa2", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#295\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#295\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#295\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 295\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 37\nNode types: {'commit': 10, 'link_quality': 5, 'comment': 3, 'comment_chain': 3, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'chain_has_link_quality': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b3de30fa37bafde7", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454023, "scanner": "foundry_dataset", "fingerprint": "04994d3e42755b162152cc71930f6e49d3f39c2179f1f35da58a217a2509df75", "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": {"keys": ["verification_or_tests", "bug_fix", "ambiguous_needs_more_evidence", "data_schema_persistence", "comment_has_related_commit_context", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "agent_instruction_gap", "api_integration_gap", "runtime_failure", "human_reported_issue_then_fix_attempt", "claimed_resolved_unverified", "human_reported_issue_then_verified_fix_attempt", "claimed_resolved_with_verification_signal", "human_reported_issue_then_failing_ci_fix_attempt", "ci_failure_signal", "claimed_resolved_with_failing_ci_signal"], "count": 17, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 2, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 58, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 5, "comment_chain_has_ci": 2, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 37, "node_types": {"repo": 1, "commit": 15, "thread": 1, "comment": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#294", "issue_number": "294", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-08f4613c65b1d001", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#294\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#294\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#294\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 294\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 37\nEdges: 58\nNode types: {'commit': 15, 'link_quality': 7, 'comment': 5, 'comment_chain': 5, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 25, 'chain_has_link_quality': 7, 'thread_has_comment': 5, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'bug_fix': 5, 'ambiguous_needs_more_evidence': 4, 'data_schema_persistence': 2, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'runtime_failure': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'claimed_resolved_unverified': 2, 'claimed_resolved_with_verification_signal': 2, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-5eb07579dc5c8750", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454022, "scanner": "foundry_dataset", "fingerprint": "4a478e4309e196f6b47227ce4f1b4e04352625eaca21657b542875c9b1c627de", "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": {"bug_fix": 5, "runtime_failure": 1, "ci_failure_signal": 1, "agent_instruction_gap": 1, "verification_or_tests": 10, "human_feedback_general": 1, "data_schema_persistence": 3, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 7, "comment_has_related_commit_context": 5, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 2, "ambiguous_needs_more_evidence": 14}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 68, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 6, "thread_has_comment": 6, "comment_chain_has_ci": 2, "chain_has_link_quality": 8, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 6, "comment_chain_links_commit": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 6}, "node_count": 40, "node_types": {"repo": 1, "commit": 15, "thread": 1, "comment": 6, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 6}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#280", "issue_number": "280", "quality_tiers": {"weak_supervision": 8}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-263366c95e798bd8", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#280\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#280\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#280\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 280\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 40\nEdges: 68\nNode types: {'commit': 15, 'link_quality': 8, 'comment': 6, 'comment_chain': 6, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 30, 'chain_has_link_quality': 8, 'thread_has_comment': 6, 'thread_has_comment_chain': 6, 'comment_has_chain': 6, 'issue_chain_has_comment_chain': 6, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'ambiguous_needs_more_evidence': 7, 'bug_fix': 5, 'comment_has_related_commit_context': 5, 'data_schema_persistence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'runtime_failure': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 14, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 8}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-42a876fda714ef12", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454021, "scanner": "foundry_dataset", "fingerprint": "91b4070ac8c8c0d62094bf25fdb2b60d804ef0388f481d5fd9f33214f87e6a8d", "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": {"bug_fix": 6, "ui_workflow": 1, "ui_workflow_gap": 2, "agent_instruction_gap": 2, "verification_or_tests": 9, "human_feedback_general": 1, "data_schema_persistence": 1, "claimed_resolved_unverified": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 2, "human_reported_issue_then_verified_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 4, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_verification_signal": 4}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 66, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 6, "thread_has_comment": 6, "chain_has_link_quality": 8, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 6, "comment_chain_links_commit": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 6}, "node_count": 40, "node_types": {"repo": 1, "commit": 16, "thread": 1, "comment": 6, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 6}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#264", "issue_number": "264", "quality_tiers": {"weak_supervision": 8}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-0afc7caa88e92cf8", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#264\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#264\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#264\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 264\nGraph consistency label: supported_by_verification_signal\nNodes: 40\nEdges: 66\nNode types: {'commit': 16, 'link_quality': 8, 'comment': 6, 'comment_chain': 6, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 30, 'chain_has_link_quality': 8, 'thread_has_comment': 6, 'thread_has_comment_chain': 6, 'comment_has_chain': 6, 'issue_chain_has_comment_chain': 6, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 9, 'bug_fix': 6, 'ambiguous_needs_more_evidence': 4, 'agent_instruction_gap': 2, 'ui_workflow_gap': 2, 'comment_has_related_commit_context': 2, 'human_reported_issue_then_fix_attempt': 2, 'claimed_resolved_unverified': 2, 'human_reported_issue_then_verified_fix_attempt': 2, 'claimed_resolved_with_verification_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_feedback_general': 1, 'ui_workflow': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'claimed_resolved_unverified': 4, 'claimed_resolved_with_verification_signal': 4}\nQuality tiers: {'weak_supervision': 8}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-96a20a0c25df6fc3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454020, "scanner": "foundry_dataset", "fingerprint": "cda0ef31bc68af5b1d292bfdcdfe296b1eeecd69d6ea32aa46da305820259e82", "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": 4, "docs_or_claims": 1, "schema_or_data": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 7, "comment_chain_has_ci": 2, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 14, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 7, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1865", "issue_number": "1865", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-de58afc7307fb232", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 20, "docs_or_claims": 5, "schema_or_data": 5}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1865\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1865\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1865\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1865\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 48\nNode types: {'pr_file': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'commit': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 14, 'thread_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'comment_chain_has_ci': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'ambiguous_needs_more_evidence': 4, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'test_or_ci': 1, 'verification_or_tests': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-f506747220e9d1bf", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454019, "scanner": "foundry_dataset", "fingerprint": "233d4b21d69be6ad0706dfc8c0fb4c34d8138c65ff4fd5bc836f6789c1c1b824", "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": {"bug_fix": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 1, "verification_or_tests": 1, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 22, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 16, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1863", "issue_number": "1863", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d0d870ed7fc14558", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"schema_or_data": 4, "ui_or_frontend": 4}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1863\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1863\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1863\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1863\nGraph consistency label: supported_by_verification_signal\nNodes: 16\nEdges: 22\nNode types: {'commit': 5, 'link_quality': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'ui_or_frontend': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6e3a3a3ad4299b88", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454018, "scanner": "foundry_dataset", "fingerprint": "5e5c7a06dc73e6a0023341f1af59403fe62028e49e50c3c0362f40c29ed6cb46", "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": {"bug_fix": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 1, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 2, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 25, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 2, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1862", "issue_number": "1862", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-0e8fdc5e5b153207", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"schema_or_data": 6, "ui_or_frontend": 6}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1862\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1862\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1862\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1862\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 25\nEdges: 48\nNode types: {'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'thread_touches_file': 2, 'comment_chain_has_ci': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 4, 'bug_fix': 3, 'verification_or_tests': 3, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'ui_or_frontend': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-a25cd1298b0b6b07", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454017, "scanner": "foundry_dataset", "fingerprint": "a285ed65b4b19bda7f033d91c869a2a9e822f340d5f00d9acb809f1523ad3093", "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": {"bug_fix": 4, "api_or_backend": 4, "commit_general": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 43, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 4, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 4, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1859", "issue_number": "1859", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7a78c2052c811912", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 20}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1859\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1859\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1859\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1859\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 25\nEdges: 43\nNode types: {'commit': 8, 'pr_file': 4, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'comment_chain_touches_file': 8, 'thread_touches_file': 4, 'chain_has_link_quality': 4, 'issue_chain_touches_file': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1be651c26aca71e4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454016, "scanner": "foundry_dataset", "fingerprint": "b429d7bf0d4a3ab34487149359e866386fec14dc38fe8cdc06dae2917f058eeb", "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": {"bug_fix": 4, "test_or_ci": 2, "api_or_backend": 4, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 51, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 6, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 6, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1858", "issue_number": "1858", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-9ec73fe54f38b2ea", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 20}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1858\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1858\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1858\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1858\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 51\nNode types: {'commit': 7, 'pr_file': 6, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'thread_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-14fcd0a4f58b1709", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454015, "scanner": "foundry_dataset", "fingerprint": "44ada7f230d36bf697571279349fd42974040d907e0fbd13d7c4ca11268ae1f1", "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": {"bug_fix": 3, "test_or_ci": 2, "api_or_backend": 8, "docs_or_claims": 1, "schema_or_data": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 12, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 12, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1856", "issue_number": "1856", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ed082b4df77e98c0", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 40, "docs_or_claims": 5, "schema_or_data": 5}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1856\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1856\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1856\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1856\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 75\nNode types: {'pr_file': 12, 'commit': 8, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 8, 'verification_or_tests': 5, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-687fb726561c0621", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454014, "scanner": "foundry_dataset", "fingerprint": "406439347ab3da816122d838092c000d91d2dbac98106838dc531691d7eebf7f", "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": {"bug_fix": 5, "test_or_ci": 4, "api_or_backend": 10, "docs_or_claims": 1, "schema_or_data": 3, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 2, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 81, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 18, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 38, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 18, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1855", "issue_number": "1855", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-19e84c335f93b58f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 20, "api_or_backend": 50, "docs_or_claims": 5, "schema_or_data": 15}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1855\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1855\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1855\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1855\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 38\nEdges: 81\nNode types: {'pr_file': 18, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 18, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 10, 'bug_fix': 5, 'test_or_ci': 4, 'schema_or_data': 3, 'claimed_resolved_unverified': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-db10e56e86cc4304", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454013, "scanner": "foundry_dataset", "fingerprint": "0ab4701fa81dcbfc83268e769d01a71821519d63a5396d90f459a07e412aafe5", "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": {"bug_fix": 5, "test_or_ci": 2, "api_or_backend": 12, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 7, "ci_failure_signal": 1, "api_integration_gap": 4, "verification_or_tests": 3, "data_schema_persistence": 1, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 6, "human_reported_issue_then_failing_ci_fix_attempt": 4}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 12}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 8}, "synthetic": false, "edge_count": 155, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 1, "thread_touches_file": 23, "comment_chain_has_ci": 4, "thread_has_pr_review": 4, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "comment_chain_touches_file": 60, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 53, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 23, "pr_review": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1850", "issue_number": "1850", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-74a89815bebcd988", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 16, "api_or_backend": 96, "docs_or_claims": 8, "schema_or_data": 8, "ui_or_frontend": 56}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1850\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1850\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1850\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1850\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 53\nEdges: 155\nNode types: {'pr_file': 23, 'commit': 8, 'link_quality': 7, 'comment_chain': 5, 'pr_review': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 60, 'comment_chain_links_commit': 25, 'thread_touches_file': 23, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 7, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'thread_has_pr_review': 4, 'comment_chain_has_ci': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 12, 'ui_or_frontend': 7, 'claimed_resolved_with_failing_ci_signal': 6, 'bug_fix': 5, 'api_integration_gap': 4, 'human_reported_issue_then_failing_ci_fix_attempt': 4, 'verification_or_tests': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 12, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 8}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0ba90d4e7f3d3305", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454012, "scanner": "foundry_dataset", "fingerprint": "0a7d09d834675abd5c468cbc6e173b736b5038c0d85ad0880905c9ac147715b0", "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": {"bug_fix": 4, "test_ci_gap": 1, "api_or_backend": 6, "schema_or_data": 1, "ui_or_frontend": 3, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 88, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 10, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 33, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 10, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1849", "issue_number": "1849", "quality_tiers": {"high_confidence": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a01a3ec7c36db8ef", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 36, "schema_or_data": 6, "ui_or_frontend": 18}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1849\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1849\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 88\nNode types: {'pr_file': 10, 'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 30, 'comment_chain_links_commit': 15, 'thread_touches_file': 10, 'issue_chain_touches_file': 10, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 6, 'bug_fix': 4, 'claimed_resolved_with_failing_ci_signal': 4, 'ui_or_frontend': 3, 'verification_or_tests': 3, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'high_confidence': 5}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-efd0b5e3e19ee0ef", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454011, "scanner": "foundry_dataset", "fingerprint": "c6e489d466a75b94b4903b6a1c3db70f064c5ae402ad37bee9bd4f36b27c174f", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1841", "issue_number": "1841", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-637b3bdf08f3b58a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1841\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1841\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1841\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1841\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-3430eb62315df6b3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454010, "scanner": "foundry_dataset", "fingerprint": "0c716c3bc1e44907474deba5757e412636ddac485316a599057c63fba82c08c8", "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": {"bug_fix": 4, "verification_or_tests": 1, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1837", "issue_number": "1837", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7ee8226abf89acc5", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1837\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1837\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1837\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1837\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1b510fa95fc905c6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454009, "scanner": "foundry_dataset", "fingerprint": "c9804d29db3994756fedc6cf445614a7cda9947be45224a30f8a7cbf0e74f92f", "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": {"bug_fix": 4, "test_or_ci": 3, "api_or_backend": 6, "commit_general": 1, "docs_or_claims": 1, "schema_or_data": 3, "ci_failure_signal": 1, "api_integration_gap": 22, "verification_or_tests": 2, "data_schema_persistence": 1, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 24, "human_reported_issue_then_failing_ci_fix_attempt": 22}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 48}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 44}, "synthetic": false, "edge_count": 559, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 23, "thread_has_comment": 1, "thread_touches_file": 13, "comment_chain_has_ci": 22, "thread_has_pr_review": 22, "chain_has_link_quality": 25, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 23, "comment_chain_links_commit": 115, "comment_chain_touches_file": 276, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 23}, "node_count": 96, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 13, "pr_review": 22, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 25, "comment_chain": 23}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1833", "issue_number": "1833", "quality_tiers": {"weak_supervision": 25}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-a1ab51901fb230f9", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 78, "api_or_backend": 156, "docs_or_claims": 26, "schema_or_data": 78}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1833\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1833\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1833\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1833\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 96\nEdges: 559\nNode types: {'link_quality': 25, 'comment_chain': 23, 'pr_review': 22, 'pr_file': 13, 'commit': 7, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 276, 'comment_chain_links_commit': 115, 'chain_has_link_quality': 25, 'thread_has_comment_chain': 23, 'comment_has_chain': 23, 'issue_chain_has_comment_chain': 23, 'thread_has_pr_review': 22, 'comment_chain_has_ci': 22, 'thread_touches_file': 13, 'issue_chain_touches_file': 12, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 24, 'api_integration_gap': 22, 'human_reported_issue_then_failing_ci_fix_attempt': 22, 'api_or_backend': 6, 'bug_fix': 4, 'schema_or_data': 3, 'test_or_ci': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'docs_or_claims': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 48, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 25}\nCI labels: {'ci_failure_signal': 44}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-753d8f238723ded2", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454008, "scanner": "foundry_dataset", "fingerprint": "1bacfb29226629e64cf149cb1a70eeef7be09b61755dcdc77cdcbbdae0ce1ba9", "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": {"bug_fix": 4, "verification_or_tests": 1, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1829", "issue_number": "1829", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-5b1ac5e0c4757423", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1829\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1829\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1829\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1829\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7a055e5cc349d620", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454007, "scanner": "foundry_dataset", "fingerprint": "45a65b1ff60cda90d9b9cafd5a7115d63cd496508b5277f4e11037e6a282d6e2", "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": {"bug_fix": 4, "verification_or_tests": 1, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1825", "issue_number": "1825", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-b5d2fbc4a8579e0e", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1825\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1825\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1825\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1825\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-ade3a7b13bd123c8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454006, "scanner": "foundry_dataset", "fingerprint": "80fe093a2c86938aa25e130b7a14561838e1c82699393aff6a2446a2e3b9bb40", "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": {"bug_fix": 3, "commit_general": 1, "verification_or_tests": 1, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1821", "issue_number": "1821", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-3ba42c6563f8dd1e", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1821\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1821\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1821\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1821\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4e1fd2bc85519027", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454005, "scanner": "foundry_dataset", "fingerprint": "e965208491220c98740c7dfaf6d363c68e776341a15eb0db14f44e28f20466ae", "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": {"bug_fix": 2, "verification_or_tests": 3, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1817", "issue_number": "1817", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-297e64202c68553c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1817\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1817\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1817\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1817\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-87bab8d9f64a9dfb", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454004, "scanner": "foundry_dataset", "fingerprint": "aee14666f9746ae7149ce26c8d737375bf964c588d2d281da123e06d43285623", "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": {"commit_general": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1815", "issue_number": "1815", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-1048a5c970f7dd55", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1815\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1815\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1815\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1815\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-c0a51449a7025c73", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454003, "scanner": "foundry_dataset", "fingerprint": "247df4d1d109b1802c93dd7212173cc3b66783c7bc6a772eb4d2715260bd16ed", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1810", "issue_number": "1810", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-091d559fd2206a46", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1810\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1810\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1810\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1810\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7618bd34b32bbd54", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454002, "scanner": "foundry_dataset", "fingerprint": "dd3890d7b6fb736c29ee298a1b1b50bea5000c55ec8286355bbfa73528dba1d4", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1807", "issue_number": "1807", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-7c0d8754d633e064", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1807\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1807\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1807\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1807\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6815af7dfa7be866", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454001, "scanner": "foundry_dataset", "fingerprint": "fb2c50e39ee3c06e6a8b977231faae832e795fa229a7124ed07a6c2f34a2979b", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1805", "issue_number": "1805", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-1190708f8e31a51d", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1805\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1805\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1805\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1805\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-ce2602b7ace6b0d0", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 454000, "scanner": "foundry_dataset", "fingerprint": "ceca27d907921e0205fe88e8abcc5be08e15b4987711a43694c4c3a131567aa8", "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": {"verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1804", "issue_number": "1804", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-8a055a1301ab0ab1", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1804\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1804\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1804\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1804\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'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, 'comment_has_related_commit_context': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0e8d0f60caf7713c", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 453999, "scanner": "foundry_dataset", "fingerprint": "71967aa57ece7f538694dac116ce77611551500c472ea89b63e4b9cd9eff6ca1", "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": {"commit_general": 1, "verification_or_tests": 4, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1801", "issue_number": "1801", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ba18f41a7b47ff91", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1801\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1801\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1801\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1801\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'ambiguous_needs_more_evidence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'commit_general': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'weak_supervision': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2fe07e8bb926fd9a", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 453998, "scanner": "foundry_dataset", "fingerprint": "2fa39923b97fd92e1d31ce3b12098e176c7249fcf807ce52f34b94df8a99a78e", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1800", "issue_number": "1800", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-92e5e490f3dd5e5c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1800\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1800\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1800\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1800\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-a31ed3f739bf231f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 453997, "scanner": "foundry_dataset", "fingerprint": "c48a83e51051ab166c341205c2383aea99adb8e0a4839d3475c5e816a2b30491", "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": {"bug_fix": 1, "verification_or_tests": 4, "data_schema_persistence": 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": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1794", "issue_number": "1794", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-4c5a4f814cd6c3f7", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1794\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1794\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1794\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1794\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-5eb5870f95bd6c90", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 453996, "scanner": "foundry_dataset", "fingerprint": "7d12129d60715db27a5f7e19fcec21a1a90b4847a4d612cb31ba1b9041377541", "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": {"verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1782", "issue_number": "1782", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-abbef2b8f24baeec", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1782\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1782\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1782\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1782\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'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, 'comment_has_related_commit_context': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6}\nQuality tiers: {'high_confidence': 3}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-c07b75a1276ded2a", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 453995, "scanner": "foundry_dataset", "fingerprint": "06f10562e45216163106817b45cfe208277d7f0c15fbadc76f1d7073300104e0", "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": {"bug_fix": 1, "ci_failure_signal": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#17", "issue_number": "17", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-2c93361baacc77a5", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#17\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#17\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#17\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 17\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'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, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1646dd863aeffaf3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445211, "scanner": "foundry_dataset", "fingerprint": "21a1170dc57050750018ffd73903e482a882d433164b5621eaab884f6975f9ba", "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": "wavespestcontrolfl/waves-customer-portal#328", "human_labels": ["api_integration_gap", "data_schema_persistence"], "issue_number": "328", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-91383d1faa33d7bb", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 10, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#328\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 2\nLinked commit count: 10\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'api_integration_gap': 1, 'data_schema_persistence': 1}\nPolarities: {'bad': 2}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d85bf52f24a4c7de\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/328#discussion_r3145589064\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/328#discussion_r3145589064\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Move legacy status log write behind guarded transition**\\n\\n`service_status_log` is written before the atomic `transitionJobStatus` call (`server/routes/admin-dispatch.js:183-185`), but stale-state conflicts now return 409 (`server/routes/admin-dispatch.js:227-230`). In a concurrent update race, the losing request records a legacy status row even though the status flip was rolled back, creating phantom timeline entries for tech-portal/reporting consumers of `service_status_log` that no longer match `scheduled_services.status` / `job_status_history`.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-8cac5003f123b88d\",\n    \"kind\": \"review_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/328#discussion_r3145597995\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/328#discussion_r3145597995\\nTitle: \\nBody:\\nReal phantom-row trap. Fixed in `5dbea1a` by moving the legacy INSERT INSIDE the trx:\\n\\n```js\\nawait db.transaction(async (trx) => {\\n  // Legacy audit row INSIDE the trx so a race rejection (or any\\n  // other transitionJobSt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-6f32a6f21c14c58f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445210, "scanner": "foundry_dataset", "fingerprint": "edcbd2827bd15acd69a73a58e5d6af5887bfc271d96ddeaa36894eee096772ee", "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": "wavespestcontrolfl/waves-customer-portal#317", "human_labels": ["ui_workflow_gap"], "issue_number": "317", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-761e21cc94a11c20", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#317\nOutcome: claimed_resolved_with_failing_ci_signal\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\nChain evidence:\nIssue/PR evidence chain: wavespestcontrolfl/waves-customer-portal#317\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-27e7ad3fcd3996c2\",\n    \"kind\": \"review_comment\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/317#discussion_r3145139859\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/317#discussion_r3145139859\\nTitle: \\nBody:\\n**<sub><sub>![P2 Badge](https://img.shields.io/badge/P2-yellow?style=flat)</sub></sub>  Reset selected template when free-form draft is chosen**\\n\\nWhen the modal dropdown is set to **Free-form** it sends `template: null`, but `handleAiDraft` only updates `selectedTemplate` inside `if (template)`. That leaves the previous template stuck in state, so reopening Draft with AI preselects the old template instead of the last-applied choice, and operators can accidentally reapply stale template guidance on later drafts.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-ce28640a7c941735\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-33863239b26c090b", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445209, "scanner": "foundry_dataset", "fingerprint": "0bb371c5f60aca0c20af6d155fb22d5ba98408d566712bd15488a139dacf42a2", "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": "wavespestcontrolfl/waves-customer-portal#307", "human_labels": ["api_integration_gap"], "issue_number": "307", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.82, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-26c2b3360cb3b433", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#307\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#307\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-65d0634d4c2417b9\",\n    \"kind\": \"review_comment\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/307#discussion_r3144930165\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/307#discussion_r3144930165\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Include all V2-shared exports in the AGENTS guardrail list**\\n\\nThe new AGENTS rule says the listed exports are the shared API that V2 pages consume, but the list omits `PRODUCT_DESCRIPTIONS`, `TRACK_SAFETY_RULES`, and `stripLegacyBoilerplate`, which are imported by `ProtocolReferenceTabV2` from `SchedulePage`. Because this rule is meant to prevent accidental deletions of V2 dependencies, an engineer could remove one of these three exports without triggering the intended reviewer warning, and the V2 protocol reference flow would break.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-496fbb32042b3c7e\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-eb2f7984c153fefa", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445208, "scanner": "foundry_dataset", "fingerprint": "0f23c0673a4c46bf71552d9c2961c67f0bc5ecb8d2868071d3ec0a73c9e61e4b", "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": "wavespestcontrolfl/waves-customer-portal#267", "human_labels": ["agent_instruction_gap", "api_integration_gap", "deployment_env_gap", "mock_placeholder"], "issue_number": "267", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-46d550a63953c3ed", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#267\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 0\nLabels: {'agent_instruction_gap': 2, 'deployment_env_gap': 1, 'api_integration_gap': 1, 'mock_placeholder': 1}\nPolarities: {'bad': 5}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-24be51330a87c0b6\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/267#issuecomment-4321247048\",\n    \"text\": \"GitHub feedback: agent_instruction_gap\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/267#issuecomment-4321247048\\nTitle: \\nBody:\\n@codex review\\n\\n---\\n_Generated by [Claude Code](https://claude.ai/code)_\"\n  },\n  {\n    \"id\": \"github-feedback-comment-57403c8128488678\",\n    \"kind\": \"review_comment\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/267#discussion_r3142980057\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: review_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: chatgpt-codex-connector[bot] (Bot)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/267#discussion_r3142980057\\nTitle: \\nBody:\\n**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub>  Skip bundled review SMS for already-reviewed customers**\\n\\nThe new `has_left_google_review` guard is applied only in `sendSMS`, but completion flows can bypass `sendSMS` via `ReviewService.createInline()` (called from `server/routes/admin-dispatch.js` when `sendCompletionSms && requestReview`), which still returns a review URL that gets appended to the completion SMS. In production this means customers marked as already-reviewed can still receive the initial review ask, so the toggle does not enforce the advertised suppression behavior end-to-end.\\n\\nUseful? React with \ud83d\udc4d\u00a0/ \ud83d\udc4e.\"\n  },\n  {\n    \"id\": \"github-feedback-comment-a0170252876b3dbf\",\n    \"kind\": \"review_comment\",\n    \"label\": \"agent_instruction_gap\",\n    \"\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-a8d361b8f74553c1", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445207, "scanner": "foundry_dataset", "fingerprint": "d7253d1235bd4dd8938f49c5812e2c2df42fbb43b6fb31b01b9c2d88ea75314c", "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": "wavespestcontrolfl/waves-customer-portal#1862", "human_labels": ["api_integration_gap", "data_schema_persistence", "schema_or_data", "ui_or_frontend"], "issue_number": "1862", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.795, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-701756738aac42ca", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"schema_or_data": 1, "ui_or_frontend": 1}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1862\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1862\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 2\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 2}\nPolarities: {'bad': 3}\nChanged file labels: {'ui_or_frontend': 1, 'schema_or_data': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e422b4c79ebcabe4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1862\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1862\\nTitle: Showcase the customer portal on recurring signup (estimate + welcome email)\\nBody:\\n## What & why\\n\\nWhen a customer signs up for a recurring plan, invite them into the **customer portal** and show what they can do there. We've already sold them on the service, so this surfaces the portal's day-to-day value with a **direct-explore** framing (per owner direction).\\n\\n## Surfaces\\n\\n| Surface | Status | Change |\\n|---|---|---|\\n| **Estimate** (`EstimateViewPage`) | was missing | New `PortalShowcaseCard` on the recurring view |\\n| **Welcome email** (`membership.started`) | warmed up | New active template version: portal invitation + feature callout, CTA relabeled \\\"Explore your portal\\\" |\\n| **Welcome SMS** (`auto_new_recurring`) | already done | **Unchanged** \u2014 already opens \\\"Welcome to Waves!\\\" and links the portal |\\n\\n## Estimate card\\n\\nAdds a `PortalShowcaseCard` to the recurring branch of `EstimateViewPage` \u2014 a warm, customer-facing card (navy serif heading, \"\n  },\n  {\n    \"id\": \"github-pr-review-submission-055a30548018c81b\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1862#pullrequestreview-4518163711\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1862 Showcase the customer portal on\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-a01cdf5c26d68df1", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445206, "scanner": "foundry_dataset", "fingerprint": "1ba5b8d8c854ed8ebdeed43146fdfc240b7b7d886dd2b184efde42b280822436", "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": "wavespestcontrolfl/waves-customer-portal#1860", "human_labels": ["api_integration_gap", "api_or_backend", "docs_or_claims", "schema_or_data", "test_ci_gap", "test_or_ci", "ui_or_frontend"], "issue_number": "1860", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-702ce870a75ac1b3", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 26, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 2, "api_or_backend": 18, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 4}, "linked_commit_count": 55, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 11, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1860\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1860\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 11\nLinked commit count: 55\nLinked CI commit count: 11\nLinked CI labels: {'ci_failure_signal': 11}\nChanged file count: 26\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 10}\nPolarities: {'bad': 11}\nChanged file labels: {'ui_or_frontend': 4, 'docs_or_claims': 1, 'schema_or_data': 1, 'api_or_backend': 18, 'test_or_ci': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c562ff4e2be9935e\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1860\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1860\\nTitle: Invoice prepaid status + customer account credit\\nBody:\\n## What & why\\n\\nCloses the gap we found: there was **no way to mark an invoice prepaid for quarterly services and attribute that to the customer**. Account credit existed in the schema (`customers.account_credits`) but was dead \u2014 never read or written.\\n\\nThis adds a real **account-credit ledger** and an invoice **`prepaid`** status, with manual application (the quarterly-prepay flow): money sits as account credit, and the operator draws it down against an invoice, which marks the invoice prepaid and attributes the movement to the customer.\\n\\n## Owner decisions baked in\\n1. **Manual apply** \u2014 credit accrues automatically but never auto-deducts (avoids racing Stripe autopay).\\n2. **`prepaid` is a real new status**, distinct from Stripe-collected `paid`.\\n3. **No recurring prepay discount** \u2014 only an optional waive of the WaveGuard initial/setup fee, recorded as a flag (mirrors annual-prepay `setupFeeWaived`; d\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-1eece68fa35e175f\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1860#pullrequestreview-4517653235\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1860\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-f0f63489b88bace5", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445205, "scanner": "foundry_dataset", "fingerprint": "481cb5348d81c037234720ce2dc5b2aaac144aefad823cabfdc8aa22a8b529f3", "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": "wavespestcontrolfl/waves-customer-portal#1857", "human_labels": ["api_integration_gap", "mock_placeholder", "ui_or_frontend"], "issue_number": "1857", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-07af1140d12d2b41", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1857\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1857\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 2\nLabels: {'mock_placeholder': 1, 'api_integration_gap': 2}\nPolarities: {'bad': 3}\nChanged file labels: {'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d66b8a6b11cbd6a8\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1857\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1857\\nTitle: Phase 2 (DRAFT): simplify CompletionPanel \u2014 voice notes + remove manual AI-report\\nBody:\\n**DRAFT \u2014 work in progress.** Stacked on Phase 1 (#1849); will rebase onto `main` after that merges. Not for review yet \u2014 posting so the direction is visible.\\n\\n## Done in this increment\\n- **`useSpeechDictation` hook** (new) \u2014 Web Speech API voice-to-text extracted from `CommunicationsPageV2` into a reusable hook.\\n- **Mic on the Technician notes box** in both CompletionPanel render variants (desktop + mobile): \\\"\ud83c\udf99 Dictate notes\\\" toggle, listening state flips placeholder + button.\\n- **Removed the manual \\\"Generate AI report\\\" button** (both variants) + the now-dead `generating` state, `buildAiReportPayload`, and module-level `generateAiReport`. Report copy moves server-side (Phase 3).\\n\\n## Still to do in Phase 2 (next commits)\\n- [ ] Remove the **observations** + **recommendations** quick-pick selects (report sections auto-derive in Phase 3).\\n- [ ] Remove the manual **Law\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-8a994de5e216f24e\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1857#pullrequestreview-4514701079\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1857 Phase 2 (DRAFT): simplify CompletionPanel \u2014 voice notes + remove manual\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-cada8b608b534c21", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445204, "scanner": "foundry_dataset", "fingerprint": "5ce75e4d762a834cce7a152f66879a943bdffe38af843ef302c1855b66addbfb", "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": "wavespestcontrolfl/waves-customer-portal#1854", "human_labels": ["api_integration_gap", "api_or_backend", "ui_or_frontend"], "issue_number": "1854", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-45fe82fe7c861257", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 7, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 1, "ui_or_frontend": 6}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1854\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1854\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 7\nLabels: {'api_integration_gap': 3}\nPolarities: {'bad': 3}\nChanged file labels: {'ui_or_frontend': 6, 'api_or_backend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-049cefb5c9e39a06\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1854\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1854\\nTitle: Remove the admin Requests page \u2014 requests become an admin notification\\nBody:\\nPer Adam: the dedicated `/admin/requests` triage page goes away. An incoming service request should **just ping the admin as a notification** instead of living in its own inbox.\\n\\nThe admin notification **already fires** on every new request \u2014 `routes/requests.js` calls `NotificationService.notifyAdmin('service', \u2026)` with category/subject/location/photos and a deep-link to the customer. So this PR is the *removal* + the customer-side cleanup that the removal forces.\\n\\n## Admin \u2014 removed\\n- \\\"Requests\\\" item dropped from the Communications nav (`AdminLayoutV2`), plus the now-unused `Inbox` icon import.\\n- `/admin/requests` route + import dropped (`App.jsx`).\\n- Deleted `RequestsPage.jsx`, the admin triage routes (`admin-requests.js` \u2014 `GET` list + `PATCH` status), and their test.\\n- Unregistered `/api/admin/requests` in `server/index.js`.\\n\\n## Customer \u2014 simplified (not removed)\\nThe\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-5a8d4842b4c63b29\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1854#pullrequestreview-4514112900\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1854 Remove the admin Requests page \u2014 requests become an admin notification\\\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-5f816e0698a43dd8", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445203, "scanner": "foundry_dataset", "fingerprint": "d999755c7a19e4d63843d2aee3214a322acbbed9681d9a6eeb76ab8c7159536d", "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": "wavespestcontrolfl/waves-customer-portal#1853", "human_labels": ["api_integration_gap", "api_or_backend", "runtime_failure", "ui_or_frontend"], "issue_number": "1853", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-cbe342d8998ce20d", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 2, "ui_or_frontend": 1}, "linked_commit_count": 20, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 3, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1853\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1853\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 4\nLinked commit count: 20\nLinked CI commit count: 3\nLinked CI labels: {'ci_failure_signal': 3}\nChanged file count: 3\nLabels: {'runtime_failure': 1, 'api_integration_gap': 3}\nPolarities: {'bad': 4}\nChanged file labels: {'ui_or_frontend': 1, 'api_or_backend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-409d4c108332fa6d\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"runtime_failure\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1853\",\n    \"text\": \"GitHub feedback: runtime_failure\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1853\\nTitle: Inventory: show per-unit price across weight/volume units\\nBody:\\n## What\\nThe Inventory section now shows each vendor pack price broken out **per unit**, in the units that make sense for the product:\\n\\n- **Weight products** \u2192 `$/g \u00b7 $/oz \u00b7 $/lb`\\n- **Liquids** \u2192 `$/fl-oz \u00b7 $/qt \u00b7 $/gal`\\n\\nShown in two places (per request):\\n1. The **per-vendor price rows** in the product detail.\\n2. The **\\\"Unit Cost\\\" column** in the Products table.\\n\\nExample: a 4 lb bag at $28 \u2192 `$0.0154/g \u00b7 $0.44/oz \u00b7 $7.00/lb`; a 1 gal jug at $52 \u2192 `$0.41/fl-oz \u00b7 $13.00/qt \u00b7 $52.00/gal`.\\n\\n## How\\n- New `unitPriceBreakdown(price, quantity, { isLiquid })` in `server/services/product-costing.js` parses the pack-size string and returns the price across the matching measurement family. **Weight and volume stay dimensionally separate** \u2014 it never converts grams \u2194 millilitres.\\n- Plain `\\\"oz\\\"` is ambiguous, so it's treated as **weight** unless the product is flagged liquid (reuses the existing `looksL\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-265fcd0cb8622898\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1853#pullrequestreview-4514072305\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1853 Inventory: show per-unit price across weight/volu\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-18117cc4f0bc187f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445202, "scanner": "foundry_dataset", "fingerprint": "d4cb156ab7add23691148c17109ffee00e81326d95cb3da091d69090f3ff407a", "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": "wavespestcontrolfl/waves-customer-portal#1850", "human_labels": ["api_integration_gap", "api_or_backend", "data_schema_persistence", "docs_or_claims", "schema_or_data", "test_or_ci", "ui_or_frontend"], "issue_number": "1850", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-230c5cbbe2c80b30", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 23, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 2, "api_or_backend": 12, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 7}, "linked_commit_count": 25, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 4, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1850\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1850\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 5\nLinked commit count: 25\nLinked CI commit count: 4\nLinked CI labels: {'ci_failure_signal': 4}\nChanged file count: 23\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 4}\nPolarities: {'bad': 5}\nChanged file labels: {'ui_or_frontend': 7, 'docs_or_claims': 1, 'api_or_backend': 12, 'schema_or_data': 1, 'test_or_ci': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-acb50803cf9398ca\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1850\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1850\\nTitle: Third-party payer (Bill-To) billing \u2014 Phase 1\\nBody:\\n## Problem\\nThe person who receives the service \u2260 who pays, for a whole class of relationships \u2014 builder/GC new-construction pretreatments (e.g. Homes by West Bay \u2192 homeowner), property managers, realtors at closing, HOAs. The only existing lever was `notification_prefs.billing_email`: an invisible string you had to remember to set **and clear**, carrying no identity (AP departments reject an invoice addressed to the homeowner with no PO) and not reusable across jobs.\\n\\nThis models **Payer** as a first-class, reusable Bill-To entity, separate from the customer of record.\\n\\n## Scope (owner-chosen, Phase 1)\\n- **Default-payer-on-customer + per-job override** (both)\\n- **No payer portal yet** \u2014 AP just receives the invoice PDF\\n- **Per-payer cadence** field present, but only `due_on_receipt` is wired (NET/consolidated statements = Phase 2)\\n\\n## What changed\\n**Data** \u2014 migration `20260617000002`: `payers\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-051f5872cc1db0af\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1850#pullrequestreview-4513892814\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-8caa9a28b3b1f6b1", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445201, "scanner": "foundry_dataset", "fingerprint": "b30f64d9370b3d2f2b8e06da7359b9a6b73f99da30b17720f40a11a9752a35af", "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": "wavespestcontrolfl/waves-customer-portal#1849", "human_labels": ["api_integration_gap", "api_or_backend", "schema_or_data", "test_ci_gap", "ui_or_frontend"], "issue_number": "1849", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-73c742bf1883ff64", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 10, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"api_or_backend": 6, "schema_or_data": 1, "ui_or_frontend": 3}, "linked_commit_count": 15, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 2, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1849\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 3\nLinked commit count: 15\nLinked CI commit count: 2\nLinked CI labels: {'ci_failure_signal': 2}\nChanged file count: 10\nLabels: {'test_ci_gap': 1, 'api_integration_gap': 2}\nPolarities: {'bad': 3}\nChanged file labels: {'ui_or_frontend': 3, 'schema_or_data': 1, 'api_or_backend': 6}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-a918c79bb5325512\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"test_ci_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1849\",\n    \"text\": \"GitHub feedback: test_ci_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1849\\nTitle: Lawn assessment: 4 customer categories + consolidated Stress/Damage (Phase 1)\\nBody:\\n## What\\n\\nPhase 1 of the service-completion redesign. Re-presents the AI lawn photo-analysis scores as **four customer-facing categories** and adds a new consolidated **Stress / Damage** score:\\n\\n| Category | Source |\\n|---|---|\\n| **Color / Nutrients** | `color_health` |\\n| **Density / Coverage** | `turf_density` |\\n| **Weed Cleanliness** | `weed_suppression` |\\n| **Stress / Damage** (NEW) | worst of disease + insect + drought + mechanical + **thatch** |\\n\\nThatch is folded into Stress/Damage and no longer shown as its own card.\\n\\n## Additive / safe (no destabilizing of other systems)\\n\\nThe underlying `fungus_control` / `thatch_level` / `fungal_activity` fields stay **populated** \u2014 so the separate **Lawn Diagnostic tool**, **lawn-health trends**, and **snapshot** are untouched. Only the customer-facing presentation changes. Pre-migration rows derive Stress/Damage on read as the worst\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-799c6a47f10df66a\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1849#pullrequestreview-4513858609\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1849 Lawn assessment: 4 customer categories\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-d9b54a0db84f6ece", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445200, "scanner": "foundry_dataset", "fingerprint": "8fb773c4f85622704c1fd8f143e5e9b23ab58a8f3727c6cd5f1068d155e95dfc", "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": "wavespestcontrolfl/waves-customer-portal#1846", "human_labels": ["api_integration_gap", "api_or_backend", "test_or_ci", "ui_or_frontend"], "issue_number": "1846", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-ab55c2dc942dec23", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 8, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 3, "ui_or_frontend": 4}, "linked_commit_count": 30, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 5, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1846\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1846\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 6\nLinked commit count: 30\nLinked CI commit count: 5\nLinked CI labels: {'ci_failure_signal': 5}\nChanged file count: 8\nLabels: {'api_integration_gap': 6}\nPolarities: {'bad': 6}\nChanged file labels: {'ui_or_frontend': 4, 'api_or_backend': 3, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-3535ba2337fb708b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1846\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1846\\nTitle: Dispatch-side Rain Out button (weather-reschedule from the appointment sheet)\\nBody:\\n## What\\nAdds a **\u26c8\ufe0f Rain out** button to the appointment detail sheet's action section (next to *Cancel appointment / Mark as no-show / Book next appointment*), where Adam asked for it. It opens a dispatch-side version of the tech app's Rain Out flow.\\n\\n## Why\\nThe moved-first Rain Out flow (#1565) lived **only on the tech mobile Next Stop card**. A dispatcher watching the live board couldn't trigger it \u2014 they could drag-reschedule, but that path does **not** send the rain-specific reply-1-confirm / reply-2-switch + NWS-forecast-link customer SMS. This closes that gap.\\n\\n## How\\n- **Backend** \u2014 `GET/POST /api/admin/dispatch/:serviceId/rain-out[-options]`, thin admin wrappers over the existing, battle-tested `services/rain-out.js`. No new business logic. Same future-date stale guard as the tech route; **route scope uses the job's own assigned tech** (not the acting dispa\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-51ba479f6fb6e4fd\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1846#pullrequestreview-4513109541\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #1846 Dispatch-side Rain Out button (weather-reschedule from the ap\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-e1e11ebfb567dca7", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445199, "scanner": "foundry_dataset", "fingerprint": "12d25deb20ae6a26bcd0284047cb0a4d8267cb93b2f96772b0b3eabf44d532cd", "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": "wavespestcontrolfl/waves-customer-portal#1840", "human_labels": ["api_integration_gap"], "issue_number": "1840", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-c43fae0741453665", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1840\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1840\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'api_integration_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-d7ce5c98ba6a5fe3\",\n    \"kind\": \"issue_body\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/issues/1840\",\n    \"text\": \"GitHub feedback: api_integration_gap\\nPolarity: bad\\nKind: issue_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/issues/1840\\nTitle: Re-eval Gemini transcription fallback (gemini-2.5-flash vs gemini-3.5-flash) + Files API\\nBody:\\n`GEMINI_TRANSCRIPTION_MODEL` defaults to `gemini-2.5-flash` (long-call verifier / transcription fallback). Benchmark `gemini-3.5-flash` (and possibly a Pro tier) on real long Waves calls. Also: the current path uses inline base64, which Gemini caps at ~20 MB total request size \u2014 switch to the Files API when the payload would exceed inline limits. Env-configurable already. Part of the owner-in-progress cross-provider work.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-3bb255419f3edb9a\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-6b0ff7bd94b6e2b4", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445198, "scanner": "foundry_dataset", "fingerprint": "efdef9c888ce0aa7a8e9c75171115784b6d04348d92b3b5e040731e698c6ff8e", "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": "wavespestcontrolfl/waves-customer-portal#1833", "human_labels": ["api_integration_gap", "api_or_backend", "data_schema_persistence", "docs_or_claims", "schema_or_data", "test_or_ci"], "issue_number": "1833", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.79, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-cdeb8f9d464fa13c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 13, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 3, "api_or_backend": 6, "docs_or_claims": 1, "schema_or_data": 3}, "linked_commit_count": 115, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 22, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1833\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#1833\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 23\nLinked commit count: 115\nLinked CI commit count: 22\nLinked CI labels: {'ci_failure_signal': 22}\nChanged file count: 13\nLabels: {'data_schema_persistence': 1, 'api_integration_gap': 22}\nPolarities: {'bad': 23}\nChanged file labels: {'docs_or_claims': 1, 'schema_or_data': 3, 'api_or_backend': 6, 'test_or_ci': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-92d84852a99e26cf\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1833\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1833\\nTitle: Auto-recover hard-bounced emails from transcription typos\\nBody:\\n## What\\n\\nWhen a transactional/service email **hard-bounces** because the recipient address has a domain-level transcription typo (e.g. `jane@gmial.com` captured wrong on a phone call), automatically correct the **domain** and re-send the exact stored snapshot to the fixed address. Once the corrected address **actually delivers**, overwrite the stored customer email and record an audit trail.\\n\\nFully automatic above a confidence threshold (per product decision); domain/TLD-only corrections.\\n\\n## How\\n\\n- **`server/utils/email-typo-correction.js`** \u2014 domain/TLD-only correction toward a small set of known consumer providers (gmail, yahoo, hotmail, outlook, icloud, comcast, att, \u2026). Uses **Damerau-Levenshtein** so transpositions (`gmial`\u2192`gmail`) score as a single high-confidence edit. **Never edits the local part** \u2014 that could silently deliver to a *different real person*; domain-only fi\"\n  },\n  {\n    \"id\": \"github-pr-review-submission-e840c5c114d9b376\",\n    \"kind\": \"pr_review_submission\",\n    \"label\": \"api_integration_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1833#pullrequestreview-4512059686\",\n    \"text\": \"GitHub PR review submission: api_integration_gap\\nPolarity: bad\\nReview state: COMMENTED\\nRepo: wavespestcontrolfl/waves-customer-portal\\nPull request: #18\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-6293fe2ea06430b6", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445197, "scanner": "foundry_dataset", "fingerprint": "2dd4621751e51ea7aeaea2e3f911612776fd0b9d93edbd40cf2f85d8fd9c9b0f", "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": "wavespestcontrolfl/waves-customer-portal#1832", "human_labels": ["mock_placeholder"], "issue_number": "1832", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.92, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-c4488a35decf08ff", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1832\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1832\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-70c86717b72ba874\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1832\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1832\\nTitle: docs(AGENTS): reconcile public-route allowlist + fix surcharge/migration citations\\nBody:\\n## What\\n\\nDocs-only update to `AGENTS.md` (the code-review rulebook for Codex/ultrareview). No code or behavior change.\\n\\n### 1. Reconcile the public-route allowlist (the real fix)\\n`AGENTS.md` makes the \\\"Public-by-token routes (no auth, by design)\\\" list a **P0 gate** \u2014 *\\\"New public routes outside this list are P0.\\\"* Several shipped, genuinely-unauthenticated public routes on `main` were **missing** from it, so a review agent would false-flag them as P0 (or quietly stop trusting the rule). Added the 10 absent routes, each with its auth/token/rate-limit and read-vs-write posture:\\n\\n- `POST /api/public/estimator/property-lookup` (write, 5/hr)\\n- `POST /api/public/quote/calculate` (+ `/upsell`) (write, 10/hr, may text via Twilio)\\n- `GET /api/public/service-areas` (read-only, cached; Astro build)\\n- `GET /api/public/credentials` (+ `/:slug`) (read-only, cached; Astro build)\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-8cadfae71befae1c\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-27f4c682c0a01d62", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445196, "scanner": "foundry_dataset", "fingerprint": "a4347edc82b9728a63d1fe6e08e876791c40a928d14bf621f633529a532d7f37", "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": "wavespestcontrolfl/waves-customer-portal#1771", "human_labels": ["mock_placeholder"], "issue_number": "1771", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.895, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "gold_candidate", "confidence_tier": "high_confidence", "source_chain_id": "evidence-chain-issue_chain-f407e7268da1c01f", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1771\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1771\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-e9d78fcbd22cf093\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1771\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1771\\nTitle: [codex] Fix one-time placeholder recurring accepts\\nBody:\\n## Summary\\n\\n- Treat zero-dollar recurring placeholder rows as structural one-time accepts only when the estimate has positive one-time work.\\n- Preserve genuine recurring intent for quote-required rows, row-priced recurring rows, recurring object totals, annual totals, and nested `result.results.recurring.services` rows.\\n- Add converter defense so a true zero-dollar placeholder slip-through skips recurring scheduling/invoices/membership email and stays `One-Time`.\\n- Coalesce duplicate recurring rows without losing cadence/duration metadata, while letting positive recurring dollar fields win over stale `$0` placeholders.\\n- Add a DB-only cleanup script for strict placeholder-recurring historical rows; broad zero-monthly one-time rows are audit-only in the committed script.\\n\\n## Root Cause\\n\\nThe public accept classifier treated the presence/count of recurring rows as recurring intent even when all rec\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-350b1d079d146241\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\": 2\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-40ba02a544b89a34", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "gold_candidate"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445195, "scanner": "foundry_dataset", "fingerprint": "ff596e084029746561c9c4771125e25c05732eb01f1dd3c87252e36365534698", "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": "wavespestcontrolfl/waves-customer-portal#1769", "human_labels": ["mock_placeholder"], "issue_number": "1769", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.67, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-123c29422a490e8c", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 5, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1769\nOutcome: claimed_resolved_unverified\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: wavespestcontrolfl/waves-customer-portal#1769\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 0\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-0e1ef77e05bbec80\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1769\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/1769\\nTitle: [codex] Fix one-time placeholder recurring accepts\\nBody:\\n## Summary\\n\\n- Treat zero-dollar recurring placeholder rows as structural one-time accepts when the estimate has positive one-time work.\\n- Preserve genuine recurring intent for quote-required rows, row-priced recurring rows, recurring object totals, annual totals, and nested `result.results.recurring.services` rows.\\n- Add converter defense so a true zero-dollar placeholder slip-through skips recurring scheduling/invoices/membership email and stays `One-Time`.\\n- Keep one-time pest reservations labeled `Pest Control` instead of `Quarterly Pest Control`.\\n- Add a reusable DB-only cleanup script for the already-cleaned production data path.\\n\\n## Root Cause\\n\\nThe public accept classifier treated the presence/count of recurring rows as recurring intent even when all recurring dollar fields were zero. That allowed a one-time pest estimate with a `$0/mo` placeholder recurring row to flow into recurring onbo\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-557c9be885538514\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"repo_has_cooccurrence_profile\": 1, \"repo_has_github_evidence_summary\": 1, \"repo_has_graphs_helicopter_view\":\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-0ca588bf993def52", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 445194, "scanner": "foundry_dataset", "fingerprint": "242b2a0a5c7be8950e9afde7bbb8d16147c8b0c9600229f3db6c2c0000661e22", "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": "wavespestcontrolfl/waves-customer-portal#17", "human_labels": ["data_schema_persistence"], "issue_number": "17", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_with_failing_ci_signal", "source_backed": true, "max_confidence": 0.61, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-33ba06a5835e08fe", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"ci": 1, "docs": 6, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 0, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {}, "linked_commit_count": 4, "helicopter_view_count": 4, "source_artifact_count": 8, "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": 1, "verification_artifact_count": 1, "design_schema_api_artifact_count": 0}, "text": "Comment chain pattern product: bad_chains\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#17\nOutcome: claimed_resolved_with_failing_ci_signal\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: wavespestcontrolfl/waves-customer-portal#17\nRepo: wavespestcontrolfl/waves-customer-portal\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_with_failing_ci_signal\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 1\nLinked CI labels: {'ci_failure_signal': 1}\nChanged file count: 0\nLabels: {'data_schema_persistence': 1}\nPolarities: {'bad': 1}\nChanged file labels: {}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-c29bfdc077eb78ed\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"data_schema_persistence\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/wavespestcontrolfl/waves-customer-portal/pull/17#issuecomment-4285969706\",\n    \"text\": \"GitHub feedback: data_schema_persistence\\nPolarity: bad\\nKind: issue_comment\\nRepo: wavespestcontrolfl/waves-customer-portal\\nAuthor: wavespestcontrolfl (User)\\nURL: https://github.com/wavespestcontrolfl/waves-customer-portal/pull/17#issuecomment-4285969706\\nTitle: \\nBody:\\nSuperseded \u2014 original 6acbff4 + aaf43f9 commits are already on main, and the Stripe Terminal fix has since been replaced by the 3.9.x \u2192 5.4.0 SDK migration in a3acaa8. This 3.9.x-symbol patch no longer applies.\"\n  }\n]\nChanged files:\n[]\nLinked chain ids:\n[\"evidence-chain-comment_to_commit-f3a9615194b1bba2\"]\nSource graph evidence:\nSource evidence repo graph summary\nRepo: wavespestcontrolfl/waves-customer-portal\nGraph label: source_backed_multi_signal_graph\nNodes: 16\nEdges: 24\nNode types: {\"cooccurrence_profile\": 1, \"github_repo_summary\": 1, \"helicopter_repo_view\": 4, \"repo\": 1, \"source_artifact\": 8, \"source_bundle\": 1}\nEdge types: {\"artifact_needs_claim_verification\": 7, \"artifact_supports_verification\": 1, \"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\": 8, \"repo_has_source_bundle\": 1, \"source_bundle_uses_cooccurrence_profile\": 1}\nArtifact families: {\"ci\": 1, \"docs\": 6, \"generated_claims\": 1}\nHelicopter views: {\"graphs\": 2, \"schemas\": 2}\nBundle labels: {\"source_backed_fake_real_verification_bundle\": 1}\nCo-occurrence labels: {\"ci_contradiction_cluster\": 1}", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "comment-chain-pattern-bad_chains-3750d1f05251a485", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456494, "scanner": "foundry_dataset", "fingerprint": "2482719aa38abb39c710095d81427017822f778f28c2af20725db3d7c7896fd9", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 7, "security_auth_secret": 2, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 19, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#344", "issue_number": "344", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-f3219fb1ccca52f6", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#344\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#344\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#344\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 344\nGraph consistency label: weak_supervision_needs_review\nNodes: 19\nEdges: 26\nNode types: {'commit': 7, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 7, 'claimed_resolved_unverified': 4, 'security_auth_secret': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'claimed_resolved_unverified': 8}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-f8d11d4c70cba702", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456493, "scanner": "foundry_dataset", "fingerprint": "fdd85f0024144b7b2f030cd619520bd92b18c270276e0445c6b062d65a0c8ae2", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 5, "runtime_failure": 1, "security_auth_secret": 1, "verification_or_tests": 5, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 10, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#332", "issue_number": "332", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-6279ff537c7c4d3e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#332\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#332\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#332\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 332\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 26\nNode types: {'commit': 10, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'runtime_failure': 1, 'human_reported_issue_then_fix_attempt': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-752bf1dd5df2a628", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456492, "scanner": "foundry_dataset", "fingerprint": "12bb08f41600ccc162431e7707ad88f72ad46e9ad17753cae39d64dddf05b10a", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 6, "security_auth_secret": 2, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 8}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 26, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 18, "node_types": {"repo": 1, "commit": 6, "thread": 1, "comment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#315", "issue_number": "315", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-e4268b04cf47aa5e", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#315\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#315\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#315\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 315\nGraph consistency label: weak_supervision_needs_review\nNodes: 18\nEdges: 26\nNode types: {'commit': 6, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 6, 'claimed_resolved_unverified': 4, 'security_auth_secret': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1}\nOutcomes: {'claimed_resolved_unverified': 8}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-24b577ed3b1935e8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456491, "scanner": "foundry_dataset", "fingerprint": "e8be4a9b8517c8e37a6f78133bf6d6a7c1fdfeda036b4623d793387d55eedad7", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "security_auth_secret": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#302", "issue_number": "302", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-f4b7d599010018b7", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#302\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#302\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#302\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 302\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6e4ecc47ed73b237", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456490, "scanner": "foundry_dataset", "fingerprint": "19087cfcdace56143a1ce17a02b61a0bf1b2097caf116e8f9e066e518c7ec3aa", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 9, "ci_failure_signal": 1, "api_integration_gap": 2, "security_auth_secret": 4, "agent_instruction_gap": 2, "verification_or_tests": 4, "claimed_resolved_unverified": 8, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 6, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 2, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 16, "claimed_resolved_with_failing_ci_signal": 4}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 87, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 8, "thread_has_comment": 8, "comment_chain_has_ci": 2, "chain_has_link_quality": 10, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 8, "comment_chain_links_commit": 39, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 8}, "node_count": 44, "node_types": {"repo": 1, "commit": 13, "thread": 1, "comment": 8, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 10, "comment_chain": 8}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#284", "issue_number": "284", "quality_tiers": {"weak_supervision": 10}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-d87d648ae3e5ae96", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#284\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#284\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#284\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 284\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 44\nEdges: 87\nNode types: {'commit': 13, 'link_quality': 10, 'comment': 8, 'comment_chain': 8, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 39, 'chain_has_link_quality': 10, 'thread_has_comment': 8, 'thread_has_comment_chain': 8, 'comment_has_chain': 8, 'issue_chain_has_comment_chain': 8, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 9, 'claimed_resolved_unverified': 8, 'human_reported_issue_then_fix_attempt': 6, 'security_auth_secret': 4, 'verification_or_tests': 4, 'agent_instruction_gap': 2, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'claimed_resolved_with_failing_ci_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 16, 'claimed_resolved_with_failing_ci_signal': 4}\nQuality tiers: {'weak_supervision': 10}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-eb53d38e607d5479", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456489, "scanner": "foundry_dataset", "fingerprint": "95d9b519e40bbb3931ea1c9115eddc0ce9ac62a02f9b2216e4a69f431ea37246", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 6, "api_integration_gap": 2, "security_auth_secret": 1, "agent_instruction_gap": 1, "verification_or_tests": 6, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 2, "comment_has_related_commit_context": 2, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 4}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 46, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 20, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 30, "node_types": {"repo": 1, "commit": 12, "thread": 1, "comment": 4, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#278", "issue_number": "278", "quality_tiers": {"high_confidence": 4, "weak_supervision": 2}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-4a2d5754660e90ca", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#278\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#278\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#278\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 278\nGraph consistency label: supported_by_high_confidence_link\nNodes: 30\nEdges: 46\nNode types: {'commit': 12, 'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 20, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 6, 'verification_or_tests': 6, 'claimed_resolved_unverified': 4, 'api_integration_gap': 2, 'human_reported_issue_then_fix_attempt': 2, 'comment_has_related_commit_context': 2, 'ambiguous_needs_more_evidence': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'security_auth_secret': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'ambiguous_needs_more_evidence': 4}\nQuality tiers: {'high_confidence': 4, 'weak_supervision': 2}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-87ba7f1a17ddcd0a", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456488, "scanner": "foundry_dataset", "fingerprint": "1d08a5d16426c0248d443951df78b041f0ebe5e1d52ba045e9065732a6d3bfb0", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_or_secrets": 2, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1826", "issue_number": "1826", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-e3e073a47e7cfb18", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1826\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1826\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1826\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1826\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'security_or_secrets': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7389a9651f093e28", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456487, "scanner": "foundry_dataset", "fingerprint": "bc08855c448289b7c9deef7110aeca91bbe9a6a27433fd8a35bab3b8fd86eb50", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_or_secrets": 2, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1824", "issue_number": "1824", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-3a539301771f00c7", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1824\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1824\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1824\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1824\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'security_or_secrets': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-33f696b5667e0bc2", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456486, "scanner": "foundry_dataset", "fingerprint": "5605a1b14b498a5b7fe9cba3bd84f98a70beceeaa5a2348accde94d8569ab2c8", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_or_secrets": 1, "security_auth_secret": 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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1813", "issue_number": "1813", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-e6954adeeef301cb", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1813\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1813\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1813\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1813\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1, 'security_or_secrets': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-fb61525de2360624", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456485, "scanner": "foundry_dataset", "fingerprint": "542d90d8df1ce0370c510612d19d7fe08d9e913d31b6812bbd5edceb9301c0f7", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 5, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1797", "issue_number": "1797", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-85d3316f54f55951", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1797\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1797\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1797\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1797\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b4cb3f4170c096f4", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456484, "scanner": "foundry_dataset", "fingerprint": "a0b6ac2b44e3161bcc7e3d9ca4af40f4a1073df1cae7c8c7f0cff7690c124f93", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "security_or_secrets": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1796", "issue_number": "1796", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-0d9f0488babacf5c", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1796\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1796\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1796\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1796\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'security_or_secrets': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e825ea424107638f", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456483, "scanner": "foundry_dataset", "fingerprint": "aaec2c4aa19aef34e91e23f730bc2a161cc1bee7f7ae8e80c1141a12385691ff", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "security_or_secrets": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1790", "issue_number": "1790", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-026ca848a23f5a58", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1790\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1790\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1790\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1790\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'security_or_secrets': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-29834ce052eda2b9", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456482, "scanner": "foundry_dataset", "fingerprint": "8ca7215d873512f4879c6516d2d971db757b9bc6f11767cd42bc7603722638ae", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "security_auth_secret": 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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1787", "issue_number": "1787", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-876f46379bda6532", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1787\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1787\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1787\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1787\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-fcfd0cdbbfb19b55", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456481, "scanner": "foundry_dataset", "fingerprint": "8d93cd9f6b9de1c53c722f7889c68dca585f6e96bfa8769fd99109cf19b4df21", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_or_secrets": 2, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1786", "issue_number": "1786", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-70c815d5976192e7", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1786\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1786\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1786\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1786\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'security_or_secrets': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-bae7b9f964f10bae", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456480, "scanner": "foundry_dataset", "fingerprint": "f6ba6d8abbf638376ba01cf45c24e22769a70e6ab46a110b8b9c9e7f899d666c", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_or_secrets": 1, "security_auth_secret": 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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1781", "issue_number": "1781", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ea48cf63aa5b5e75", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1781\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1781\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1781\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1781\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'security_or_secrets': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-5efafb687ae1fcb1", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456479, "scanner": "foundry_dataset", "fingerprint": "0bfb0fd09961de029b6c5cf0d0c02c9d830adccb3c8c35c0ec7c2384f5270553", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "security_auth_secret": 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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1779", "issue_number": "1779", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-146e2453e33aceed", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1779\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1779\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1779\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1779\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b94cf8c8bbaef783", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456478, "scanner": "foundry_dataset", "fingerprint": "3e174206af58cbb0ef335ce3f5ec9c96425eab70a8489fedfa2eddd07b2d7cd8", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "security_auth_secret": 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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1778", "issue_number": "1778", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-2245847eada39cb3", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1778\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1778\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1778\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1778\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-41a62cf18c459a8b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456477, "scanner": "foundry_dataset", "fingerprint": "795de4d410cc71e7b728006eb17d9002d8970ede7b3884f8ff251f1eb01a8dba", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "commit_general": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1773", "issue_number": "1773", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-f0db37d45e6800fb", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1773\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1773\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1773\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1773\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1fdd8ae2b1494309", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456476, "scanner": "foundry_dataset", "fingerprint": "bc66cd225f3319eff082ea7e19cdcfc87838f2214c4fb901736692728e3dc408", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "security_auth_secret": 1, "verification_or_tests": 2, "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": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1772", "issue_number": "1772", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-727d1471102ce1f3", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1772\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1772\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1772\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1772\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4f91ae189be79588", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456475, "scanner": "foundry_dataset", "fingerprint": "eb083a95fe2f87cdb6c4d7db6fafa408544f1408dd780ef20c7b4d0984ea24af", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 4, "commit_general": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1770", "issue_number": "1770", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-fa5a5bed0168a237", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1770\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1770\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1770\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1770\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-3af2d522693dc9be", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_auth_guardrail_gap", "level": "error", "message": {"text": "Foundry mined security auth guardrail gaps: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 456474, "scanner": "foundry_dataset", "fingerprint": "a6c4f6989a5274ed5eb1e84dadb5b05d12df3f66a3845fdcc79fc20a2bc77896", "category": "auth", "severity": "critical", "confidence": 0.78, "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": "Security/auth changes without enough guardrails", "intent": "Assumption-check security/auth examples requiring stronger tests or CI.", "labels": {"bug_fix": 3, "commit_general": 1, "security_auth_secret": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "security_auth_without_guardrails", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "security_auth_guardrail_gaps", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 15, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 13, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1768", "issue_number": "1768", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-bbe94eaaabce20de", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "text": "Graph query export: Security/auth changes without enough guardrails\nQuery id: security_auth_guardrail_gaps\nQuery type: motif_query\nIntent: Assumption-check security/auth examples requiring stronger tests or CI.\nMotif: security_auth_without_guardrails\nTraining usage: assumption_check\nGraph gold label: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1768\nEvidence:\nGraph motif: Security/auth change without enough guardrails\nMotif id: security_auth_without_guardrails\nPolarity: bad\nTraining usage: assumption_check\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1768\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1768\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1768\nGraph consistency label: weak_supervision_needs_review\nNodes: 13\nEdges: 15\nNode types: {'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'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: {'bug_fix': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train auth boundary repair with tests, permission matrices, and secret-handling checks.\n- Keep risky auth changes separate from ordinary bug-fix examples.\nAssumption checks:\n- Are auth/permission paths covered by tests?\n- Are secrets, CORS, or access rules verified rather than summarized?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-104e62053e57b708", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/security_auth_guardrail_gaps/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/security_auth_guardrail_gaps", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452156, "scanner": "foundry_dataset", "fingerprint": "83617a8bb007760573fdf227c0d71c0cfa557a24d6fce1ac1a3b97726db725d2", "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": 7, "mock_placeholder": 1, "ci_failure_signal": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "agent_instruction_gap": 2, "verification_or_tests": 6, "claimed_resolved_unverified": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 10, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 58, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 5, "comment_chain_has_ci": 2, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 35, "node_types": {"repo": 1, "commit": 13, "thread": 1, "comment": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#267", "issue_number": "267", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-94f7e689faa9c9e7", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#267\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 267\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 35\nEdges: 58\nNode types: {'commit': 13, 'link_quality': 7, 'comment': 5, 'comment_chain': 5, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 25, 'chain_has_link_quality': 7, 'thread_has_comment': 5, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 7, 'verification_or_tests': 6, 'claimed_resolved_unverified': 5, 'human_reported_issue_then_fix_attempt': 3, 'agent_instruction_gap': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'api_integration_gap': 1, 'mock_placeholder': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'ambiguous_needs_more_evidence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 10, 'ambiguous_needs_more_evidence': 2, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-6d92d1de982cc882", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452155, "scanner": "foundry_dataset", "fingerprint": "56788d06543c280f5672f33d0c28cc248b8d1f284d707b8dfe076a32cbfd6bc5", "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": 5, "ui_or_frontend": 2, "mock_placeholder": 1, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 8}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 2, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 26, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 2, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1857", "issue_number": "1857", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-24bc84a4ccdeb19d", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"ui_or_frontend": 12}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1857\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1857\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1857\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1857\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 48\nNode types: {'commit': 8, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'thread_touches_file': 2, 'comment_chain_has_ci': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_with_failing_ci_signal': 4, 'verification_or_tests': 3, 'api_integration_gap': 2, 'ui_or_frontend': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 4}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1e39782427c85e4f", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452154, "scanner": "foundry_dataset", "fingerprint": "440cea1d77fce0925e96a5daa61833513a2ef7c772f860d5cb562d8b5492b51c", "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": 4, "test_or_ci": 1, "api_or_backend": 4, "docs_or_claims": 1, "schema_or_data": 1, "mock_placeholder": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 55, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 7, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 14, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 27, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 7, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1848", "issue_number": "1848", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-fd4e42326d1c2a6f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 20, "docs_or_claims": 5, "schema_or_data": 5}}, "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: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1848\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1848\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1848\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1848\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 27\nEdges: 55\nNode types: {'pr_file': 7, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 14, 'comment_chain_links_commit': 10, 'thread_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-f80e8dd412d8b53c", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452153, "scanner": "foundry_dataset", "fingerprint": "9d4f92193efc4695d01d92b3f0d96639ca388d26d4e3f889951691fbc5d2919b", "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": 4, "mock_placeholder": 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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1844", "issue_number": "1844", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-491ca3d4d26b9f18", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1844\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1844\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1844\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1844\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-cbfe174298a4d86d", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452152, "scanner": "foundry_dataset", "fingerprint": "4747c8931b81d7b4b3d47400776e895591a9717ba110efeb9aff992294a0f5f2", "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": 4, "mock_placeholder": 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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1843", "issue_number": "1843", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1d7357972b1aec7c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1843\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1843\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1843\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1843\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b20391fddfbe41e0", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452151, "scanner": "foundry_dataset", "fingerprint": "c74dec227c66d36ab4db623f00b0cf5a2c661c0b789fc22d6f75526dc130c73d", "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": 5, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1832", "issue_number": "1832", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a9b2f964058e653a", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1832\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1832\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1832\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1832\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-fe66fac0cb521146", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452150, "scanner": "foundry_dataset", "fingerprint": "1fa4f1b8bef7cdd5db3792b86a4604258ebd3d9d93eda3a8d0fcb6be30567b40", "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": 4, "mock_placeholder": 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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1802", "issue_number": "1802", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-53d16c1fe20917e6", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1802\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1802\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1802\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1802\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-d396d857de3f53c3", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452149, "scanner": "foundry_dataset", "fingerprint": "87de70f93dd572abff84773d6af87e2d4c11772f192641c0918f81679724da8c", "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": 4, "mock_placeholder": 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": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1784", "issue_number": "1784", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-842362ed8c7e911c", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {}}, "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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1784\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1784\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1784\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1784\nGraph consistency label: supported_by_verification_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-478a3d7a99cb51de", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452148, "scanner": "foundry_dataset", "fingerprint": "fc41903a9a1f7d6140a35e1d656503c953ddca8a64121de97bc36d2d0300da29", "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": 5, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1771", "issue_number": "1771", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c73072f47a6e5b03", "graph_gold_label": "supported_by_high_confidence_link", "changed_file_labels": {}}, "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_high_confidence_link\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1771\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1771\nGraph gold label: supported_by_high_confidence_link\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1771\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1771\nGraph consistency label: supported_by_high_confidence_link\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'high_confidence': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2afab13a9103edf9", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 452147, "scanner": "foundry_dataset", "fingerprint": "9157bc964f726365efe7520196078945813e74ea8d0e6f7b4a13dd4f972d5481", "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": 5, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1769", "issue_number": "1769", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-499204f0a9c75acd", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {}}, "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: weak_supervision_needs_review\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1769\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: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1769\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1769\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1769\nGraph consistency label: weak_supervision_needs_review\nNodes: 14\nEdges: 16\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, '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: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 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/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e749449a44fe6903", "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": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450585, "scanner": "foundry_dataset", "fingerprint": "0dab960071eb0c387b723281ac87520b70ed022d703d9e8e717703853c179b31", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 7, "ci_failure_signal": 1, "agent_instruction_gap": 2, "verification_or_tests": 5, "human_feedback_general": 1, "data_schema_persistence": 1, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "comment_chain_has_ci": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 20, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 31, "node_types": {"repo": 1, "commit": 12, "thread": 1, "comment": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#333", "issue_number": "333", "quality_tiers": {"weak_supervision": 6}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-340da1b62e20d0e4", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#333\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#333\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 333\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 31\nEdges: 47\nNode types: {'commit': 12, 'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 20, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 7, 'verification_or_tests': 5, 'claimed_resolved_unverified': 4, 'agent_instruction_gap': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'data_schema_persistence': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'ambiguous_needs_more_evidence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'ambiguous_needs_more_evidence': 2, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 6}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b646f1412396273b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450584, "scanner": "foundry_dataset", "fingerprint": "968ea1df38c171aff851051b4f80861f145916c66f8b0234ca2f087a0d4dc051", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 7, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#328", "issue_number": "328", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-56e0908bbaaafb50", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#328\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#328\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 328\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'bug_fix': 1, 'ci_failure_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7931fe4b510e90cc", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450583, "scanner": "foundry_dataset", "fingerprint": "9370d821e1fbad940648c7c60ca0a517feed9c3297188cad3dfced884f09d787", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 2, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 6, "human_feedback_general": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 3, "comment_has_related_commit_context": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"ambiguous_needs_more_evidence": 6, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#327", "issue_number": "327", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-fbe68f1b24082258", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#327\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#327\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#327\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 327\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 6, 'ambiguous_needs_more_evidence': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'human_feedback_general': 1, 'api_integration_gap': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 6, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-cab2032e33b061fc", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450582, "scanner": "foundry_dataset", "fingerprint": "ee3f69589ad420bb4a2a3f23115aa77fced5bfa8e201c2298eec807e750a98be", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 1, "ci_failure_signal": 1, "verification_or_tests": 6, "human_feedback_general": 2, "thread_needs_classification": 2, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 28, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 2, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 20, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#321", "issue_number": "321", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-226e4cc2c0ea47ef", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#321\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#321\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#321\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 321\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 20\nEdges: 28\nNode types: {'commit': 7, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_has_ci': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 6, 'ambiguous_needs_more_evidence': 4, 'human_feedback_general': 2, 'comment_has_related_commit_context': 2, 'thread_needs_classification': 2, 'issue_or_pull_request_thread': 1, 'ci_failure_signal': 1, 'bug_fix': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4dc96cb2df70120b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450581, "scanner": "foundry_dataset", "fingerprint": "6735df5904e3a40d435237f4f2943c1dcd7f90eb958c1176c58dff12cb5f3b70", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 1, "ui_workflow_gap": 1, "ci_failure_signal": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#317", "issue_number": "317", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-45fcc0fdd7958b3a", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#317\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#317\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#317\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 317\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 15\nEdges: 17\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2684034172de964e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450580, "scanner": "foundry_dataset", "fingerprint": "dc33128ccc0d346a1a4f126a81ea00ac4f6c01b0f88a76fc7c2d68037ecc2e04", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#307", "issue_number": "307", "quality_tiers": {"high_confidence": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-d1e21e7493780e7e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#307\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#307\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#307\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 307\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 15\nEdges: 17\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'bug_fix': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6}\nQuality tiers: {'high_confidence': 3}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-59da0c4572b038e3", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450579, "scanner": "foundry_dataset", "fingerprint": "ad91b2b9af0ba0dad04cb91a79c3e9f5b52c89cff19e2f3777c818501ea8efd1", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "security_auth_secret": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#302", "issue_number": "302", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2cf39bc68bc362fd", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#302\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#302\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#302\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 302\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'security_auth_secret': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b18e2ab8e6c0ba10", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450578, "scanner": "foundry_dataset", "fingerprint": "1ae01b0f5d461df75859817324bd687ae8c1ab23257ee61afa61da9d917fb797", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 5, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 23, "node_types": {"repo": 1, "commit": 10, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#301", "issue_number": "301", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-cd3aff2af36f7867", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#301\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#301\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#301\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 301\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 23\nEdges: 27\nNode types: {'commit': 10, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-8a04fd755883a1f8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450577, "scanner": "foundry_dataset", "fingerprint": "15883214c50652a38c0159ea73883c2d10792f45501715c2663b07a32b30c6c8", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#300", "issue_number": "300", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-fb259010921f471c", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#300\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#300\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#300\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 300\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b54c90260b3cee26", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450576, "scanner": "foundry_dataset", "fingerprint": "f9a04e11317396378afce1e93783862acb2b02b3a2b270d4b6f45bfc6f2cc9c0", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#299", "issue_number": "299", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-612800ce13c59757", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#299\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#299\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#299\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 299\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-09da439c9e9b1925", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450575, "scanner": "foundry_dataset", "fingerprint": "ffa25e99d0b2e93fc382db6b856e22055cdfbe7427965c5d1b643e13ac23ff0f", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#298", "issue_number": "298", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-f2b951f2d1d16e99", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#298\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#298\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#298\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 298\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e224f5503ef27bfa", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450574, "scanner": "foundry_dataset", "fingerprint": "96165c4d3e87cb55708e26d4dd96161d681329eeaadfdc4a177e9ed558c4152c", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 3, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#297", "issue_number": "297", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-31dc2a96594b8bed", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#297\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#297\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#297\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 297\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 5, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-cc23db88f67c0c00", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450573, "scanner": "foundry_dataset", "fingerprint": "3907623c37ff959cfc10d8974539f3ca70175cf7d72e7f144a9fcbc82e0320a1", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"keys": ["verification_or_tests", "bug_fix", "claimed_resolved_unverified", "agent_instruction_gap", "api_integration_gap", "human_reported_issue_then_fix_attempt", "comment_has_related_commit_context", "ambiguous_needs_more_evidence", "human_reported_issue_then_failing_ci_fix_attempt", "claimed_resolved_with_failing_ci_signal", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "build_install_failure", "test_ci_gap", "ci_failure_signal", "human_reported_issue_then_verified_fix_attempt", "claimed_resolved_with_verification_signal"], "count": 17, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 12, "ambiguous_needs_more_evidence": 6, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 108, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 10, "thread_has_comment": 10, "comment_chain_has_ci": 2, "chain_has_link_quality": 12, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 10, "comment_chain_links_commit": 50, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 10}, "node_count": 55, "node_types": {"repo": 1, "commit": 18, "thread": 1, "comment": 10, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 12, "comment_chain": 10}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#296", "issue_number": "296", "quality_tiers": {"weak_supervision": 12}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-41735e2af0220e34", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#296\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#296\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 296\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 55\nEdges: 108\nNode types: {'commit': 18, 'link_quality': 12, 'comment': 10, 'comment_chain': 10, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 50, 'chain_has_link_quality': 12, 'thread_has_comment': 10, 'thread_has_comment_chain': 10, 'comment_has_chain': 10, 'issue_chain_has_comment_chain': 10, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'bug_fix': 8, 'claimed_resolved_unverified': 6, 'agent_instruction_gap': 4, 'api_integration_gap': 4, 'human_reported_issue_then_fix_attempt': 4, 'comment_has_related_commit_context': 3, 'ambiguous_needs_more_evidence': 3, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'claimed_resolved_with_failing_ci_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'build_install_failure': 1, 'test_ci_gap': 1, 'ci_failure_signal': 1, 'human_reported_issue_then_verified_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 12, 'ambiguous_needs_more_evidence': 6, 'claimed_resolved_with_failing_ci_signal': 4, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 12}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-a772bdec897ac334", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450572, "scanner": "foundry_dataset", "fingerprint": "5e758937e4d7ec4f69f36ab9897c0053f7de5fcef41687ef7cbf402391b5e1c8", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 37, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 3, "comment_chain_has_ci": 1, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 26, "node_types": {"repo": 1, "commit": 10, "thread": 1, "comment": 3, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#295", "issue_number": "295", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c2bdd7e277e98228", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#295\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#295\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#295\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 295\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 37\nNode types: {'commit': 10, 'link_quality': 5, 'comment': 3, 'comment_chain': 3, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'chain_has_link_quality': 5, 'thread_has_comment': 3, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 5, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-738faa303f5c7437", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450571, "scanner": "foundry_dataset", "fingerprint": "54a90c81a2e3331985c550f186b118d9028026153715f51705eff92a27bb3a14", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"keys": ["verification_or_tests", "bug_fix", "ambiguous_needs_more_evidence", "data_schema_persistence", "comment_has_related_commit_context", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "agent_instruction_gap", "api_integration_gap", "runtime_failure", "human_reported_issue_then_fix_attempt", "claimed_resolved_unverified", "human_reported_issue_then_verified_fix_attempt", "claimed_resolved_with_verification_signal", "human_reported_issue_then_failing_ci_fix_attempt", "ci_failure_signal", "claimed_resolved_with_failing_ci_signal"], "count": 17, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 2, "ambiguous_needs_more_evidence": 8, "claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 58, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 5, "comment_chain_has_ci": 2, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 37, "node_types": {"repo": 1, "commit": 15, "thread": 1, "comment": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#294", "issue_number": "294", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-58cf8239e4af8700", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#294\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#294\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#294\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 294\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 37\nEdges: 58\nNode types: {'commit': 15, 'link_quality': 7, 'comment': 5, 'comment_chain': 5, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 25, 'chain_has_link_quality': 7, 'thread_has_comment': 5, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'bug_fix': 5, 'ambiguous_needs_more_evidence': 4, 'data_schema_persistence': 2, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'runtime_failure': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8, 'claimed_resolved_unverified': 2, 'claimed_resolved_with_verification_signal': 2, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4c4cf483111924f7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450570, "scanner": "foundry_dataset", "fingerprint": "4d5fbfb0e8268c270e0f15d79711ed31f6773f9d314611ea9f8c3cc3b70d5aeb", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#293", "issue_number": "293", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-667063866730703c", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#293\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#293\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#293\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 293\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-646fbf4217ff365d", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450569, "scanner": "foundry_dataset", "fingerprint": "e304507dced6dafd211941e1c10f161efbbdd72cd50fa84d26b94ade766aa3f9", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#292", "issue_number": "292", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-514c633d5398960d", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#292\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#292\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#292\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 292\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-dd89938869a77765", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450568, "scanner": "foundry_dataset", "fingerprint": "c112673e14d1235b510c0a9730c9300c4af42299f690bc3c64186d66ef7e1983", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#291", "issue_number": "291", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2a9357ee1ec32704", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#291\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#291\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#291\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 291\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1240252cf2778003", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450567, "scanner": "foundry_dataset", "fingerprint": "9c6921203c5f2a4f7819e92022ba805b03b3f01595e8c52fee58afa64c834997", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#288", "issue_number": "288", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c9640ae35465258f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#288\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#288\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#288\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 288\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4f1c1d4959d9f256", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450566, "scanner": "foundry_dataset", "fingerprint": "519a84e2eaf09b0f9ab7d5c7c0f55dd5b40e7a0564a603f21e38d8863f4a5be7", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#287", "issue_number": "287", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-aec2f92cce9b7d93", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#287\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#287\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#287\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 287\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7579fa2a84ba12f8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450565, "scanner": "foundry_dataset", "fingerprint": "3db0e74db6234ef7f7cf54c8aaba0f6254a8a518e28bf7812bb6c843e27b91ab", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#285", "issue_number": "285", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-908efe693f1b9757", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#285\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#285\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#285\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 285\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-3c3857aec3503173", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450564, "scanner": "foundry_dataset", "fingerprint": "2ae87db099f39ec95cfcf09af03592662f10bc4773279390b86bdab0c0066e8d", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 9, "ci_failure_signal": 1, "api_integration_gap": 2, "security_auth_secret": 4, "agent_instruction_gap": 2, "verification_or_tests": 4, "claimed_resolved_unverified": 8, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 6, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 2, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 16, "claimed_resolved_with_failing_ci_signal": 4}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 87, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 8, "thread_has_comment": 8, "comment_chain_has_ci": 2, "chain_has_link_quality": 10, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 8, "comment_chain_links_commit": 39, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 8}, "node_count": 44, "node_types": {"repo": 1, "commit": 13, "thread": 1, "comment": 8, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 10, "comment_chain": 8}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#284", "issue_number": "284", "quality_tiers": {"weak_supervision": 10}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-9ec968b76be7c6ce", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#284\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#284\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#284\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 284\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 44\nEdges: 87\nNode types: {'commit': 13, 'link_quality': 10, 'comment': 8, 'comment_chain': 8, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 39, 'chain_has_link_quality': 10, 'thread_has_comment': 8, 'thread_has_comment_chain': 8, 'comment_has_chain': 8, 'issue_chain_has_comment_chain': 8, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 9, 'claimed_resolved_unverified': 8, 'human_reported_issue_then_fix_attempt': 6, 'security_auth_secret': 4, 'verification_or_tests': 4, 'agent_instruction_gap': 2, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'claimed_resolved_with_failing_ci_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 16, 'claimed_resolved_with_failing_ci_signal': 4}\nQuality tiers: {'weak_supervision': 10}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-c07388e30fc8596d", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450563, "scanner": "foundry_dataset", "fingerprint": "184bbc47ff2b788e58f2b3e97768154b51b612888ff682c8339c3fce5b7d1a78", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#283", "issue_number": "283", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-9300eae0804e09c2", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#283\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#283\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#283\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 283\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7b7e173c3ddb4fab", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450562, "scanner": "foundry_dataset", "fingerprint": "1ef3ba2dfeaddde4f33d0228eb7211c848dfe576dfdb4c81eb0d38da8a0a1366", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "agent_instruction_gap": 2, "verification_or_tests": 6, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 4, "comment_chain_has_ci": 1, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 4, "comment_chain_links_commit": 20, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 30, "node_types": {"repo": 1, "commit": 11, "thread": 1, "comment": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#282", "issue_number": "282", "quality_tiers": {"weak_supervision": 6}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e1e1df6d5635ba46", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#282\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#282\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#282\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 282\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 30\nEdges: 47\nNode types: {'commit': 11, 'link_quality': 6, 'comment': 4, 'comment_chain': 4, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 20, 'chain_has_link_quality': 6, 'thread_has_comment': 4, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 6, 'bug_fix': 5, 'claimed_resolved_unverified': 4, 'agent_instruction_gap': 2, 'human_reported_issue_then_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'claimed_resolved_with_failing_ci_signal': 2, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 6}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2eade7dff65e6962", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450561, "scanner": "foundry_dataset", "fingerprint": "cd3ce17531ccff8b2f596752a61af088ec1618f01ecabe8056bd3f3a84138e55", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "runtime_failure": 1, "ci_failure_signal": 1, "agent_instruction_gap": 1, "verification_or_tests": 10, "human_feedback_general": 1, "data_schema_persistence": 3, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 7, "comment_has_related_commit_context": 5, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 2, "ambiguous_needs_more_evidence": 14}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 68, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 6, "thread_has_comment": 6, "comment_chain_has_ci": 2, "chain_has_link_quality": 8, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 6, "comment_chain_links_commit": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 6}, "node_count": 40, "node_types": {"repo": 1, "commit": 15, "thread": 1, "comment": 6, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 6}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#280", "issue_number": "280", "quality_tiers": {"weak_supervision": 8}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-55f1daf141558edc", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#280\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#280\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#280\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 280\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 40\nEdges: 68\nNode types: {'commit': 15, 'link_quality': 8, 'comment': 6, 'comment_chain': 6, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 30, 'chain_has_link_quality': 8, 'thread_has_comment': 6, 'thread_has_comment_chain': 6, 'comment_has_chain': 6, 'issue_chain_has_comment_chain': 6, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 10, 'ambiguous_needs_more_evidence': 7, 'bug_fix': 5, 'comment_has_related_commit_context': 5, 'data_schema_persistence': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'human_feedback_general': 1, 'runtime_failure': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 14, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 8}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-d70254f02e63efc6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450560, "scanner": "foundry_dataset", "fingerprint": "9d199ebe97252bf59aa6fec7599b25fcfc2a64486b4af45a0a02d5db08a2bddf", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#279", "issue_number": "279", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-ebc4ddf8786ce16b", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#279\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#279\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#279\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 279\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0867a15bec31b34a", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450559, "scanner": "foundry_dataset", "fingerprint": "19fa6b4cdf42b7adbccbf6f177bddb2977f7668aec87fb48a600f46ba2151d27", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#276", "issue_number": "276", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e47cac079237acee", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#276\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#276\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#276\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 276\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b235ad000fe0cbd6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450558, "scanner": "foundry_dataset", "fingerprint": "aebd5699536478d36d15113088cfe41d95b33d449fda55a36af5dee7cf88ac57", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#273", "issue_number": "273", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-13a678cc067f80a3", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#273\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#273\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#273\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 273\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-0f5a5a660f973888", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450557, "scanner": "foundry_dataset", "fingerprint": "e61a34c0f95000b1bec11bc51f0955dc2f84e7e6fe8cb15aa227d8a67c8a67c3", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#272", "issue_number": "272", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-851795613c8ff9e0", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#272\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#272\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#272\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 272\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-f90ad2d03e272469", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450556, "scanner": "foundry_dataset", "fingerprint": "73660db3092ee06616d0a12144a2a03458072ed175eb7c83a950f70614ee2ef6", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 20, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#271", "issue_number": "271", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-8afd486ec729039e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#271\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#271\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#271\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 271\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 20\nEdges: 27\nNode types: {'commit': 7, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-e8abb4d43824c26b", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450555, "scanner": "foundry_dataset", "fingerprint": "5b031a8906e3e4ecde35a9b74fda7538837edfb68320c05e4b95ca3d94927148", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "deployment_env_gap": 2, "api_integration_gap": 1, "agent_instruction_gap": 2, "verification_or_tests": 7, "claimed_resolved_unverified": 4, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 2, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 8, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 4}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 58, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 5, "comment_chain_has_ci": 2, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 34, "node_types": {"repo": 1, "commit": 12, "thread": 1, "comment": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#270", "issue_number": "270", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-4de46e573913fdc4", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#270\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#270\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#270\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 270\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 34\nEdges: 58\nNode types: {'commit': 12, 'link_quality': 7, 'comment': 5, 'comment_chain': 5, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 25, 'chain_has_link_quality': 7, 'thread_has_comment': 5, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 7, 'bug_fix': 5, 'claimed_resolved_unverified': 4, 'agent_instruction_gap': 2, 'deployment_env_gap': 2, 'human_reported_issue_then_fix_attempt': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'claimed_resolved_with_failing_ci_signal': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'ci_failure_signal': 1, 'comment_has_related_commit_context': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 8, 'claimed_resolved_with_failing_ci_signal': 4, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-f780f5d3637b4383", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450554, "scanner": "foundry_dataset", "fingerprint": "ae0284914dc09d9d233a60c25423aba45e7b86cf2d5c16b28dc1e14ae4063d37", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 3, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#269", "issue_number": "269", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-08219583074d79c3", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#269\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#269\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#269\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 269\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-bcdeff0bf673c0dc", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450553, "scanner": "foundry_dataset", "fingerprint": "5afd09810559fb0c7533fd927251aea32a8ca1db4e5dca82d4b8a2f938809289", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#268", "issue_number": "268", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c4680aa5aee124a2", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#268\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#268\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#268\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 268\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7a94bfb9fdd2be14", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450552, "scanner": "foundry_dataset", "fingerprint": "a6a8ffd4f046cc766c32c5a3c7266052a81e1942f77ff23a561d08223645b49a", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 7, "mock_placeholder": 1, "ci_failure_signal": 1, "deployment_env_gap": 1, "api_integration_gap": 1, "agent_instruction_gap": 2, "verification_or_tests": 6, "claimed_resolved_unverified": 5, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "comment_has_related_commit_context": 1, "human_reported_issue_then_fix_attempt": 3, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 10, "ambiguous_needs_more_evidence": 2, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 58, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 5, "comment_chain_has_ci": 2, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 35, "node_types": {"repo": 1, "commit": 13, "thread": 1, "comment": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#267", "issue_number": "267", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-35a6e326278d5563", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#267\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#267\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 267\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 35\nEdges: 58\nNode types: {'commit': 13, 'link_quality': 7, 'comment': 5, 'comment_chain': 5, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 25, 'chain_has_link_quality': 7, 'thread_has_comment': 5, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 7, 'verification_or_tests': 6, 'claimed_resolved_unverified': 5, 'human_reported_issue_then_fix_attempt': 3, 'agent_instruction_gap': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'api_integration_gap': 1, 'mock_placeholder': 1, 'comment_has_related_commit_context': 1, 'ci_failure_signal': 1, 'ambiguous_needs_more_evidence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 10, 'ambiguous_needs_more_evidence': 2, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-a9e921814fcc37dc", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450551, "scanner": "foundry_dataset", "fingerprint": "12b6632df23696ac7f2395f14b057984bed78ff881a14269fcf9e47b29eb2fec", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#266", "issue_number": "266", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-c219f8483a520049", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#266\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#266\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#266\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 266\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-fa51c7fcf32f2550", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450550, "scanner": "foundry_dataset", "fingerprint": "606ac13b6126f8a83802586f0e5f482d9ef01b670a389d71697842ba7e0a88b3", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#265", "issue_number": "265", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b8209651baf40a6f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#265\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#265\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#265\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 265\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b5e130e7b113c8c8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450549, "scanner": "foundry_dataset", "fingerprint": "a30cf11c383e8266d8dac9fc898fc2212684f9467f5c15bc986d5a94600d99ee", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#262", "issue_number": "262", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-dc39d6e2e3490f6f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#262\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#262\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#262\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 262\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1ae8d76754bb2c67", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450548, "scanner": "foundry_dataset", "fingerprint": "5abf1d40595bf1bbfe0696907c61b9e0901a6d5d0fafd97868cee23e1c40012a", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#261", "issue_number": "261", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-348c70d6df62cc6f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#261\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#261\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#261\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 261\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-d1f11ee02250da67", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450547, "scanner": "foundry_dataset", "fingerprint": "c3f3e86552aac66ba592f2d890240797d2c8b9665f4162c9df6f133c56edc769", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 9, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#260", "issue_number": "260", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2bfd32702e695d10", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#260\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#260\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#260\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 260\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 22\nEdges: 27\nNode types: {'commit': 9, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'verification_or_tests': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-d02e613a191d0840", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450546, "scanner": "foundry_dataset", "fingerprint": "cb513dc0fd55c20eea03d6d4fa9107000bda5bec39213304ea924b111c03b962", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#259", "issue_number": "259", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-2725408d685da890", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#259\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#259\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#259\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 259\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 27\nNode types: {'commit': 8, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 4, 'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-a4f0f354c83b3147", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450545, "scanner": "foundry_dataset", "fingerprint": "96e7a090b10e526221fb3ed20035aea7bef7a6e75464281d7bc80a3a2da7cac4", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ci_failure_signal": 1, "api_integration_gap": 1, "agent_instruction_gap": 1, "verification_or_tests": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 27, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "comment_chain_has_ci": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 20, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#258", "issue_number": "258", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-82fd5063768b683c", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#258\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#258\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#258\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 258\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 20\nEdges: 27\nNode types: {'commit': 7, 'link_quality': 4, 'comment': 2, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_unverified': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'agent_instruction_gap': 1, 'api_integration_gap': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-bff343f8884e437e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450544, "scanner": "foundry_dataset", "fingerprint": "6f678237925622768e6231b1a7c5fe18688d532ef2ef3a34e16962f8de98b195", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"test_or_ci": 1, "api_or_backend": 4, "docs_or_claims": 1, "schema_or_data": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 1, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 4, "comment_has_related_commit_context": 2, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"ambiguous_needs_more_evidence": 8}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 7, "comment_chain_has_ci": 2, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 2, "comment_chain_links_commit": 2, "comment_chain_touches_file": 14, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 21, "node_types": {"repo": 1, "commit": 1, "thread": 1, "comment": 1, "pr_file": 7, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1865", "issue_number": "1865", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-70727138e5cbbc42", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 20, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1865\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1865\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1865\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1865\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 21\nEdges: 48\nNode types: {'pr_file': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'commit': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 14, 'thread_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_links_commit': 2, 'comment_chain_has_ci': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'ambiguous_needs_more_evidence': 4, 'comment_has_related_commit_context': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'test_or_ci': 1, 'verification_or_tests': 1, 'ci_failure_signal': 1}\nOutcomes: {'ambiguous_needs_more_evidence': 8}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-aeaefc817fce276e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450543, "scanner": "foundry_dataset", "fingerprint": "88cdf47f18125a92350ac9b16828a6ff4b042068dd91ed8243457d08b717c016", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 3, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 1, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 2, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 25, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 2, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1862", "issue_number": "1862", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-0c32799a3dbdda7c", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"schema_or_data": 6, "ui_or_frontend": 6}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1862\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1862\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1862\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1862\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 25\nEdges: 48\nNode types: {'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'thread_touches_file': 2, 'comment_chain_has_ci': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 4, 'bug_fix': 3, 'verification_or_tests': 3, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'ui_or_frontend': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1e71b3c86c42b179", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450542, "scanner": "foundry_dataset", "fingerprint": "ce108b1d314488ad3e4a65872efef69a686d12e64971bab96f38094579e053a8", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 2, "test_or_ci": 10, "test_ci_gap": 1, "api_or_backend": 1, "commit_general": 1, "schema_or_data": 1, "ui_or_frontend": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 4, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 76, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 13, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 13, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1861", "issue_number": "1861", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a69b3efb35f659cb", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 50, "api_or_backend": 5, "schema_or_data": 5, "ui_or_frontend": 5}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1861\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1861\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1861\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1861\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 76\nNode types: {'pr_file': 13, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 13, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'test_or_ci': 10, 'verification_or_tests': 4, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'api_integration_gap': 1, 'ui_or_frontend': 1, 'schema_or_data': 1, 'api_or_backend': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-b033bdd774630f56", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450541, "scanner": "foundry_dataset", "fingerprint": "883624a5a39581c9183e44674b221916dd107bcd12a9e2d0916d51f06423aa60", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_or_ci": 2, "test_ci_gap": 1, "api_or_backend": 18, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 4, "ci_failure_signal": 1, "api_integration_gap": 10, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 13, "human_reported_issue_then_failing_ci_fix_attempt": 11}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 26}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 22}, "synthetic": false, "edge_count": 297, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 11, "thread_has_comment": 1, "thread_touches_file": 26, "comment_chain_has_ci": 11, "thread_has_pr_review": 10, "chain_has_link_quality": 13, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 11, "comment_chain_links_commit": 55, "comment_chain_touches_file": 132, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 11}, "node_count": 73, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 26, "pr_review": 10, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 13, "comment_chain": 11}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1860", "issue_number": "1860", "quality_tiers": {"high_confidence": 13}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-55a669c4e9d0d82e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 28, "api_or_backend": 252, "docs_or_claims": 14, "schema_or_data": 14, "ui_or_frontend": 56}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1860\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1860\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1860\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1860\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 73\nEdges: 297\nNode types: {'pr_file': 26, 'link_quality': 13, 'comment_chain': 11, 'pr_review': 10, 'commit': 7, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 132, 'comment_chain_links_commit': 55, 'thread_touches_file': 26, 'chain_has_link_quality': 13, 'issue_chain_touches_file': 12, 'thread_has_comment_chain': 11, 'comment_has_chain': 11, 'comment_chain_has_ci': 11, 'issue_chain_has_comment_chain': 11, 'thread_has_pr_review': 10, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 18, 'claimed_resolved_with_failing_ci_signal': 13, 'human_reported_issue_then_failing_ci_fix_attempt': 11, 'api_integration_gap': 10, 'ui_or_frontend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 26}\nQuality tiers: {'high_confidence': 13}\nCI labels: {'ci_failure_signal': 22}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-7d5f8d5ee6c4082c", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450540, "scanner": "foundry_dataset", "fingerprint": "c0e8b67351809a172830586a5a0bc12a08756e7aa9852576bf4625a5ede9433a", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "api_or_backend": 4, "commit_general": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 43, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 4, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 25, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 4, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1859", "issue_number": "1859", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-0552da004835d5f9", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 20}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1859\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1859\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1859\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1859\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 25\nEdges: 43\nNode types: {'commit': 8, 'pr_file': 4, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 10, 'comment_chain_touches_file': 8, 'thread_touches_file': 4, 'chain_has_link_quality': 4, 'issue_chain_touches_file': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'commit_general': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4cd6da7777c439be", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450539, "scanner": "foundry_dataset", "fingerprint": "e4294e5701c7c1c1417d3d915d457c07b4e6b02aa5e34984577eb4166a15bfa4", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_or_ci": 2, "api_or_backend": 4, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 51, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 6, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 6, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 26, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 6, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1858", "issue_number": "1858", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e151b7d636d466fd", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 20}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1858\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1858\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1858\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1858\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 51\nNode types: {'commit': 7, 'pr_file': 6, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'thread_touches_file': 6, 'issue_chain_touches_file': 6, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-4242bd0c2e4bab04", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450538, "scanner": "foundry_dataset", "fingerprint": "23e3d4a1c2b4e55d4712749542796ffe1764aa2df5bcf9636f4b9c1fc13492a0", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "ui_or_frontend": 2, "mock_placeholder": 1, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 8}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 2, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 6, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 26, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 2, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1857", "issue_number": "1857", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b998c5aa3c42f91e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"ui_or_frontend": 12}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1857\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1857\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1857\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1857\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 26\nEdges: 48\nNode types: {'commit': 8, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 15, 'comment_chain_touches_file': 6, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'thread_touches_file': 2, 'comment_chain_has_ci': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 5, 'claimed_resolved_with_failing_ci_signal': 4, 'verification_or_tests': 3, 'api_integration_gap': 2, 'ui_or_frontend': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-bdbc4bec1ba38237", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450537, "scanner": "foundry_dataset", "fingerprint": "284a237cc4f8f4f191ad275b7fee9b873eb6e97b2b1e5fa8b2e7c2b966557676", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 3, "test_or_ci": 2, "api_or_backend": 8, "docs_or_claims": 1, "schema_or_data": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 5, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 75, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 12, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 33, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 12, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1856", "issue_number": "1856", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-7be2eb9a5bf46482", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 10, "api_or_backend": 40, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1856\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1856\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1856\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1856\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 75\nNode types: {'pr_file': 12, 'commit': 8, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 8, 'verification_or_tests': 5, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-de27df842dc3ccf2", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450536, "scanner": "foundry_dataset", "fingerprint": "fcf9c5a6ca837800a1e1fa86f40ad458c5ea1d66efb6eace26d84327d396ba81", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "test_or_ci": 4, "api_or_backend": 10, "docs_or_claims": 1, "schema_or_data": 3, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 2, "data_schema_persistence": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 6, "claimed_resolved_with_failing_ci_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 81, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 18, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 38, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 18, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1855", "issue_number": "1855", "quality_tiers": {"weak_supervision": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-6be96ec2fdbca362", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 20, "api_or_backend": 50, "docs_or_claims": 5, "schema_or_data": 15}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1855\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1855\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1855\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1855\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 38\nEdges: 81\nNode types: {'pr_file': 18, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 24, 'thread_touches_file': 18, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 10, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 10, 'bug_fix': 5, 'test_or_ci': 4, 'schema_or_data': 3, 'claimed_resolved_unverified': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'human_reported_issue_then_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'weak_supervision': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-ec970f839058283e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450535, "scanner": "foundry_dataset", "fingerprint": "78ce40163308ef36ca29d6d32d5df245c3d65347e8f7e8cea397d9219eb11a2e", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "api_or_backend": 1, "ui_or_frontend": 6, "ci_failure_signal": 1, "api_integration_gap": 3, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 73, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 7, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 21, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 30, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 7, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1854", "issue_number": "1854", "quality_tiers": {"weak_supervision": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-839872b437c0af3b", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 6, "ui_or_frontend": 36}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1854\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1854\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1854\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1854\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 30\nEdges: 73\nNode types: {'pr_file': 7, 'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 21, 'comment_chain_links_commit': 15, 'thread_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 6, 'bug_fix': 4, 'claimed_resolved_with_failing_ci_signal': 4, 'api_integration_gap': 3, 'verification_or_tests': 3, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_or_backend': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'weak_supervision': 5}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-78836285dff3b029", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450534, "scanner": "foundry_dataset", "fingerprint": "a8e06751f40487aa55a88154a5cbe990d1e49c1c33e1d8e966e31eb35d896888", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "api_or_backend": 2, "ui_or_frontend": 1, "runtime_failure": 1, "ci_failure_signal": 1, "api_integration_gap": 3, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 5, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 3}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 10, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 6}, "synthetic": false, "edge_count": 67, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 4, "thread_has_comment": 1, "thread_touches_file": 3, "comment_chain_has_ci": 3, "thread_has_pr_review": 3, "chain_has_link_quality": 6, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 4, "comment_chain_links_commit": 20, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 4}, "node_count": 29, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 3, "pr_review": 3, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 4}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1853", "issue_number": "1853", "quality_tiers": {"high_confidence": 6}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-1819c39475a6fe4e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 14, "ui_or_frontend": 7}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1853\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1853\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1853\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1853\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 29\nEdges: 67\nNode types: {'commit': 7, 'link_quality': 6, 'comment_chain': 4, 'pr_review': 3, 'pr_file': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 20, 'comment_chain_touches_file': 12, 'chain_has_link_quality': 6, 'thread_has_comment_chain': 4, 'comment_has_chain': 4, 'issue_chain_has_comment_chain': 4, 'thread_has_pr_review': 3, 'thread_touches_file': 3, 'comment_chain_has_ci': 3, 'issue_chain_touches_file': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 5, 'bug_fix': 4, 'api_integration_gap': 3, 'verification_or_tests': 3, 'human_reported_issue_then_failing_ci_fix_attempt': 3, 'api_or_backend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'runtime_failure': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 10, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'high_confidence': 6}\nCI labels: {'ci_failure_signal': 6}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-9edc6975235a87f7", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450533, "scanner": "foundry_dataset", "fingerprint": "4eb1ac4130cc2fbd88ac23c67d271b7b05ee24b494f1506db62b3bf24e47e830", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 5, "test_or_ci": 2, "api_or_backend": 12, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 7, "ci_failure_signal": 1, "api_integration_gap": 4, "verification_or_tests": 3, "data_schema_persistence": 1, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 6, "human_reported_issue_then_failing_ci_fix_attempt": 4}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 12}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 8}, "synthetic": false, "edge_count": 155, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 5, "thread_has_comment": 1, "thread_touches_file": 23, "comment_chain_has_ci": 4, "thread_has_pr_review": 4, "chain_has_link_quality": 7, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 5, "comment_chain_links_commit": 25, "comment_chain_touches_file": 60, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 5}, "node_count": 53, "node_types": {"repo": 1, "commit": 8, "thread": 1, "comment": 1, "pr_file": 23, "pr_review": 4, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 7, "comment_chain": 5}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1850", "issue_number": "1850", "quality_tiers": {"weak_supervision": 7}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-fffd7ee751984d8e", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 16, "api_or_backend": 96, "docs_or_claims": 8, "schema_or_data": 8, "ui_or_frontend": 56}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1850\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1850\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1850\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1850\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 53\nEdges: 155\nNode types: {'pr_file': 23, 'commit': 8, 'link_quality': 7, 'comment_chain': 5, 'pr_review': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 60, 'comment_chain_links_commit': 25, 'thread_touches_file': 23, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 7, 'thread_has_comment_chain': 5, 'comment_has_chain': 5, 'issue_chain_has_comment_chain': 5, 'thread_has_pr_review': 4, 'comment_chain_has_ci': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 12, 'ui_or_frontend': 7, 'claimed_resolved_with_failing_ci_signal': 6, 'bug_fix': 5, 'api_integration_gap': 4, 'human_reported_issue_then_failing_ci_fix_attempt': 4, 'verification_or_tests': 3, 'test_or_ci': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 12, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 7}\nCI labels: {'ci_failure_signal': 8}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-3770cdb82701b048", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450532, "scanner": "foundry_dataset", "fingerprint": "bb4c2e8a272b31ae846da4203c58da9ff12e5ab576d0022af2f79d1903155d35", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_ci_gap": 1, "api_or_backend": 6, "schema_or_data": 1, "ui_or_frontend": 3, "ci_failure_signal": 1, "api_integration_gap": 2, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 4, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 2}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 8, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 4}, "synthetic": false, "edge_count": 88, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 3, "thread_has_comment": 1, "thread_touches_file": 10, "comment_chain_has_ci": 2, "thread_has_pr_review": 2, "chain_has_link_quality": 5, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 10, "thread_has_comment_chain": 3, "comment_chain_links_commit": 15, "comment_chain_touches_file": 30, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 3}, "node_count": 33, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 10, "pr_review": 2, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 3}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1849", "issue_number": "1849", "quality_tiers": {"high_confidence": 5}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a440597f6fa95cce", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"api_or_backend": 36, "schema_or_data": 6, "ui_or_frontend": 18}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1849\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1849\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1849\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 33\nEdges: 88\nNode types: {'pr_file': 10, 'commit': 7, 'link_quality': 5, 'comment_chain': 3, 'pr_review': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 30, 'comment_chain_links_commit': 15, 'thread_touches_file': 10, 'issue_chain_touches_file': 10, 'chain_has_link_quality': 5, 'thread_has_comment_chain': 3, 'comment_has_chain': 3, 'issue_chain_has_comment_chain': 3, 'thread_has_pr_review': 2, 'comment_chain_has_ci': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 6, 'bug_fix': 4, 'claimed_resolved_with_failing_ci_signal': 4, 'ui_or_frontend': 3, 'verification_or_tests': 3, 'api_integration_gap': 2, 'human_reported_issue_then_failing_ci_fix_attempt': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 8, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'high_confidence': 5}\nCI labels: {'ci_failure_signal': 4}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1999b0b32d5d744e", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450531, "scanner": "foundry_dataset", "fingerprint": "9c1630223fd10e81f4976182fce64766533056f34a24d70f437e59dbb1651ba8", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_or_ci": 1, "api_or_backend": 4, "docs_or_claims": 1, "schema_or_data": 1, "mock_placeholder": 1, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 1, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 55, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 1, "thread_touches_file": 7, "comment_chain_has_ci": 1, "thread_has_pr_review": 1, "chain_has_link_quality": 4, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 7, "thread_has_comment_chain": 2, "comment_chain_links_commit": 10, "comment_chain_touches_file": 14, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 27, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 7, "pr_review": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 2}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1848", "issue_number": "1848", "quality_tiers": {"high_confidence": 4}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-9555b58cb45cbe2f", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 5, "api_or_backend": 20, "docs_or_claims": 5, "schema_or_data": 5}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1848\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1848\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1848\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1848\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 27\nEdges: 55\nNode types: {'pr_file': 7, 'commit': 7, 'link_quality': 4, 'comment_chain': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'pr_review': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 14, 'comment_chain_links_commit': 10, 'thread_touches_file': 7, 'issue_chain_touches_file': 7, 'chain_has_link_quality': 4, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_pr_review': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 4, 'bug_fix': 4, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'api_integration_gap': 1, 'docs_or_claims': 1, 'schema_or_data': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'claimed_resolved_with_failing_ci_signal': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_with_failing_ci_signal': 2}\nQuality tiers: {'high_confidence': 4}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-1bfa810a90ddc2de", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450530, "scanner": "foundry_dataset", "fingerprint": "8160f5d1965b785c1323315fab8f888c185df613c26c2d9481190eb08e6d8a64", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_or_ci": 1, "api_or_backend": 3, "ui_or_frontend": 4, "ci_failure_signal": 1, "api_integration_gap": 6, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 7, "claimed_resolved_with_verification_signal": 1, "human_reported_issue_then_verified_fix_attempt": 1, "human_reported_issue_then_failing_ci_fix_attempt": 5}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 14, "claimed_resolved_with_verification_signal": 2}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 10}, "synthetic": false, "edge_count": 135, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 6, "thread_has_comment": 1, "thread_touches_file": 8, "comment_chain_has_ci": 5, "thread_has_pr_review": 5, "chain_has_link_quality": 8, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 6, "comment_chain_links_commit": 30, "comment_chain_touches_file": 48, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 6}, "node_count": 40, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 8, "pr_review": 5, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 8, "comment_chain": 6}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1846", "issue_number": "1846", "quality_tiers": {"high_confidence": 8}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-104d70185735f6d6", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 9, "api_or_backend": 27, "ui_or_frontend": 36}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1846\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1846\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1846\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1846\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 40\nEdges: 135\nNode types: {'pr_file': 8, 'link_quality': 8, 'commit': 7, 'comment_chain': 6, 'pr_review': 5, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 48, 'comment_chain_links_commit': 30, 'thread_touches_file': 8, 'chain_has_link_quality': 8, 'issue_chain_touches_file': 8, 'thread_has_comment_chain': 6, 'comment_has_chain': 6, 'issue_chain_has_comment_chain': 6, 'thread_has_pr_review': 5, 'comment_chain_has_ci': 5, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 7, 'api_integration_gap': 6, 'human_reported_issue_then_failing_ci_fix_attempt': 5, 'ui_or_frontend': 4, 'bug_fix': 4, 'api_or_backend': 3, 'verification_or_tests': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'claimed_resolved_with_verification_signal': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 14, 'claimed_resolved_with_verification_signal': 2}\nQuality tiers: {'high_confidence': 8}\nCI labels: {'ci_failure_signal': 10}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-abf1a9f05a73c57c", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450529, "scanner": "foundry_dataset", "fingerprint": "d84f1595745d6d83293ec2d39430b1ca3293ce3d99efbd5ee9d9724f5a98faf7", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 2, "ci_failure_signal": 1, "api_integration_gap": 1, "verification_or_tests": 3, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 17, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1840", "issue_number": "1840", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-8cf069ed061e05d4", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1840\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1840\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1840\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1840\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 15\nEdges: 17\nNode types: {'commit': 5, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_failing_ci_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-2e24520bafbe7977", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450528, "scanner": "foundry_dataset", "fingerprint": "f49c249c8cf8551a54c76b8f7622524164a0293176523cc80a5ad7b4b3ba5eb2", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 4, "test_or_ci": 3, "api_or_backend": 6, "commit_general": 1, "docs_or_claims": 1, "schema_or_data": 3, "ci_failure_signal": 1, "api_integration_gap": 22, "verification_or_tests": 2, "data_schema_persistence": 1, "claimed_resolved_unverified": 1, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 24, "human_reported_issue_then_failing_ci_fix_attempt": 22}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_failing_ci_signal": 48}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 44}, "synthetic": false, "edge_count": 559, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 23, "thread_has_comment": 1, "thread_touches_file": 13, "comment_chain_has_ci": 22, "thread_has_pr_review": 22, "chain_has_link_quality": 25, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 23, "comment_chain_links_commit": 115, "comment_chain_touches_file": 276, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 23}, "node_count": 96, "node_types": {"repo": 1, "commit": 7, "thread": 1, "comment": 1, "pr_file": 13, "pr_review": 22, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 25, "comment_chain": 23}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#1833", "issue_number": "1833", "quality_tiers": {"weak_supervision": 25}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a4771f42da652eaa", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {"test_or_ci": 78, "api_or_backend": 156, "docs_or_claims": 26, "schema_or_data": 78}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1833\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#1833\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#1833\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 1833\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 96\nEdges: 559\nNode types: {'link_quality': 25, 'comment_chain': 23, 'pr_review': 22, 'pr_file': 13, 'commit': 7, 'thread': 1, 'repo': 1, 'comment': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_touches_file': 276, 'comment_chain_links_commit': 115, 'chain_has_link_quality': 25, 'thread_has_comment_chain': 23, 'comment_has_chain': 23, 'issue_chain_has_comment_chain': 23, 'thread_has_pr_review': 22, 'comment_chain_has_ci': 22, 'thread_touches_file': 13, 'issue_chain_touches_file': 12, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'claimed_resolved_with_failing_ci_signal': 24, 'api_integration_gap': 22, 'human_reported_issue_then_failing_ci_fix_attempt': 22, 'api_or_backend': 6, 'bug_fix': 4, 'schema_or_data': 3, 'test_or_ci': 3, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'docs_or_claims': 1, 'human_reported_issue_then_fix_attempt': 1, 'commit_general': 1, 'claimed_resolved_unverified': 1, 'ci_failure_signal': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 48, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 25}\nCI labels: {'ci_failure_signal': 44}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-9206a7ce2b72aada", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_failing_ci_claim", "level": "error", "message": {"text": "Foundry mined claimed resolved with failing ci: wavespestcontrolfl/waves-customer-portal"}, "properties": {"repobilityId": 450527, "scanner": "foundry_dataset", "fingerprint": "fa9c4a3744678e188c4a18334276540315088862c60bc1a7425b33cd730bce61", "category": "ci", "severity": "critical", "confidence": 0.86, "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": "Claimed resolved with failing CI", "intent": "Hard negatives where CI/failure evidence contradicts a resolution claim.", "labels": {"bug_fix": 1, "ci_failure_signal": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "issue_or_pull_request_thread": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_failing_ci_signal": 3, "human_reported_issue_then_failing_ci_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "claimed_resolved_with_failing_ci", "outcomes": {"claimed_resolved_with_failing_ci_signal": 6}, "polarity": "bad", "query_id": "claimed_resolved_with_failing_ci", "severity": "critical", "ci_labels": {"ci_failure_signal": 2}, "synthetic": false, "edge_count": 16, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "comment_chain_has_ci": 1, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 14, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "ci_summary": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "wavespestcontrolfl/waves-customer-portal#17", "issue_number": "17", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-b70a2e54c02a5fbc", "graph_gold_label": "contradicted_by_ci_or_failure_signal", "changed_file_labels": {}}, "text": "Graph query export: Claimed resolved with failing CI\nQuery id: claimed_resolved_with_failing_ci\nQuery type: motif_query\nIntent: Hard negatives where CI/failure evidence contradicts a resolution claim.\nMotif: claimed_resolved_with_failing_ci\nTraining usage: hard_negative\nGraph gold label: contradicted_by_ci_or_failure_signal\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#17\nEvidence:\nGraph motif: Claimed resolved while CI or failure evidence contradicts it\nMotif id: claimed_resolved_with_failing_ci\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: wavespestcontrolfl/waves-customer-portal\nThread: wavespestcontrolfl/waves-customer-portal#17\nGraph gold label: contradicted_by_ci_or_failure_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: wavespestcontrolfl/waves-customer-portal#17\nRepo: wavespestcontrolfl/waves-customer-portal\nIssue/PR number: 17\nGraph consistency label: contradicted_by_ci_or_failure_signal\nNodes: 14\nEdges: 16\nNode types: {'commit': 4, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'ci_summary': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'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, 'comment_chain_has_ci': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'verification_or_tests': 3, 'claimed_resolved_with_failing_ci_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_failing_ci_fix_attempt': 1, 'ci_failure_signal': 1, 'bug_fix': 1}\nOutcomes: {'claimed_resolved_with_failing_ci_signal': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {'ci_failure_signal': 2}\nCurriculum targets:\n- Reject confident fix summaries when CI or checks fail.\n- Teach judge models to prefer external verification over generated narrative.\nAssumption checks:\n- Did checks fail on the linked commit?\n- Does the thread claim resolution despite failing or incomplete verification?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/wavespestcontrolfl/waves-customer-portal", "source_id": "graph-query-motif_query-9e5c53b5ca509403", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/claimed_resolved_with_failing_ci/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "wavespestcontrolfl/waves-customer-portal", "source_dataset": "graph_queries/claimed_resolved_with_failing_ci", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-a7eb10f4590a5aef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 monitor-deploy.js:6"}, "properties": {"repobilityId": "e6fa771ec62bff44", "scanner": "scanner-primary", "fingerprint": "a7eb10f4590a5aef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a706e0550656e1cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/main.jsx:17"}, "properties": {"repobilityId": "941bb818f885936f", "scanner": "scanner-primary", "fingerprint": "a706e0550656e1cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7061ad0374835841", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/ScheduleCustomerSidebar.jsx:427"}, "properties": {"repobilityId": "13e4ebc3a8cf3250", "scanner": "scanner-primary", "fingerprint": "7061ad0374835841", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8b5e10fe61641f9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCardOnFileSheet.jsx:155"}, "properties": {"repobilityId": "5eae1c9888ecc95c", "scanner": "scanner-primary", "fingerprint": "8b5e10fe61641f9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1729ba4939f3581e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCheckoutSheet.jsx:254"}, "properties": {"repobilityId": "a5089dc67318e63f", "scanner": "scanner-primary", "fingerprint": "1729ba4939f3581e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ccce836607cceadf", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/schedule/CreateAppointmentModal.jsx:1228"}, "properties": {"repobilityId": "d246bb72b5b4e243", "scanner": "scanner-primary", "fingerprint": "ccce836607cceadf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f3afdbbcbf22c032", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileCustomerDetailSheet.jsx:333"}, "properties": {"repobilityId": "b49a3af4d73a8111", "scanner": "scanner-primary", "fingerprint": "f3afdbbcbf22c032", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c9b79080a06468f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TreatmentPlanPanel.jsx:38"}, "properties": {"repobilityId": "4a0e2fbcb89b91e8", "scanner": "scanner-primary", "fingerprint": "c9b79080a06468f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-56d1986432425fdc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:113"}, "properties": {"repobilityId": "309ecce98690e92c", "scanner": "scanner-primary", "fingerprint": "56d1986432425fdc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-48cb17487554b44b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:361"}, "properties": {"repobilityId": "6a392a4096796d7f", "scanner": "scanner-primary", "fingerprint": "48cb17487554b44b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8404eb3568b2e6db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDay.jsx:419"}, "properties": {"repobilityId": "30e6115b8837e3dc", "scanner": "scanner-primary", "fingerprint": "8404eb3568b2e6db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-668018737efd03aa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileServiceEditModal.jsx:144"}, "properties": {"repobilityId": "c1f3675624629b47", "scanner": "scanner-primary", "fingerprint": "668018737efd03aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8913ae39b87aa464", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:187"}, "properties": {"repobilityId": "88686133dac1bd7a", "scanner": "scanner-primary", "fingerprint": "8913ae39b87aa464", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3688a27110e03ca5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/schedule/TimeGridDays.jsx:214"}, "properties": {"repobilityId": "b0b79e3366a546a5", "scanner": "scanner-primary", "fingerprint": "3688a27110e03ca5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9b4b2af910fcc6aa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/RevenuePanelV2.jsx:104"}, "properties": {"repobilityId": "18dd0724bfe3d9ce", "scanner": "scanner-primary", "fingerprint": "9b4b2af910fcc6aa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9fa81ee7efddb47f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechCard.jsx:140"}, "properties": {"repobilityId": "4877e49e0a1b300a", "scanner": "scanner-primary", "fingerprint": "9fa81ee7efddb47f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a02f1a6914bd197f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/TechDrawer.jsx:95"}, "properties": {"repobilityId": "e1386362e501561f", "scanner": "scanner-primary", "fingerprint": "a02f1a6914bd197f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41bd73269782cb42", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/AlertCard.jsx:223"}, "properties": {"repobilityId": "499209ee4a0d35b9", "scanner": "scanner-primary", "fingerprint": "41bd73269782cb42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9815f9d17c0cc33d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dispatch/JobDrawer.jsx:312"}, "properties": {"repobilityId": "e2a5f0e3ab1face3", "scanner": "scanner-primary", "fingerprint": "9815f9d17c0cc33d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-26d3a9532d32d39d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/dashboard/charts.jsx:299"}, "properties": {"repobilityId": "222576e08d9f53ab", "scanner": "scanner-primary", "fingerprint": "26d3a9532d32d39d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-545b94ff0a39d81c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:256"}, "properties": {"repobilityId": "99921421902a743c", "scanner": "scanner-primary", "fingerprint": "545b94ff0a39d81c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-cbe480f60947898f", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/TechServicePhotosModal.jsx:138"}, "properties": {"repobilityId": "676d9ebf44b4a1cf", "scanner": "scanner-primary", "fingerprint": "cbe480f60947898f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-1c002d440baa4acc", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/components/tech/TechIntelligenceBar.jsx:181"}, "properties": {"repobilityId": "bc41e938cebed58a", "scanner": "scanner-primary", "fingerprint": "1c002d440baa4acc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8a99e7ecdb0e5880", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarV2.jsx:79"}, "properties": {"repobilityId": "80bf8bb99dbd0598", "scanner": "scanner-primary", "fingerprint": "8a99e7ecdb0e5880", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ac8b1a5d6f457e82", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/Customer360ProfileV2.jsx:2577"}, "properties": {"repobilityId": "c82873a509947d05", "scanner": "scanner-primary", "fingerprint": "ac8b1a5d6f457e82", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-65e6f3c4bcd8c56b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/IntelligenceBarShell.jsx:354"}, "properties": {"repobilityId": "f1e06bdd8ae7cb64", "scanner": "scanner-primary", "fingerprint": "65e6f3c4bcd8c56b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df18e5d2fc874ff0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:180"}, "properties": {"repobilityId": "bb01b25cdd5bdcc7", "scanner": "scanner-primary", "fingerprint": "df18e5d2fc874ff0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-faf0f688c417e2cd", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 client/src/pages/ReportViewPage.jsx:4493"}, "properties": {"repobilityId": "ab1441a50fb6f753", "scanner": "scanner-primary", "fingerprint": "faf0f688c417e2cd", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-338a6b7ea3575d4c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:313"}, "properties": {"repobilityId": "40f01112f62ec7d0", "scanner": "scanner-primary", "fingerprint": "338a6b7ea3575d4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-104028b7a74ed24a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailAutomationsPanelV2.jsx:660"}, "properties": {"repobilityId": "3b5981b4de22279f", "scanner": "scanner-primary", "fingerprint": "104028b7a74ed24a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7a6bc041a8f25264", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomersPageV2.jsx:318"}, "properties": {"repobilityId": "a93b90a5dd76bcb6", "scanner": "scanner-primary", "fingerprint": "7a6bc041a8f25264", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6840974e2c06063c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EmailTemplatesPanelV2.jsx:643"}, "properties": {"repobilityId": "43b0ef807d3e444c", "scanner": "scanner-primary", "fingerprint": "6840974e2c06063c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-03ce5b7eb927a2a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NotificationEventsTabV2.jsx:185"}, "properties": {"repobilityId": "92b343f4f4800003", "scanner": "scanner-primary", "fingerprint": "03ce5b7eb927a2a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b49289a46d1d057e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:4045"}, "properties": {"repobilityId": "fed30d33aedd28a5", "scanner": "scanner-primary", "fingerprint": "b49289a46d1d057e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ee35863d803cb83b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentRequestsPage.jsx:269"}, "properties": {"repobilityId": "7c1ecd41b99fd261", "scanner": "scanner-primary", "fingerprint": "ee35863d803cb83b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a28696e585e3d843", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DocumentTemplatesPage.jsx:610"}, "properties": {"repobilityId": "1ebb834a5c3aae5a", "scanner": "scanner-primary", "fingerprint": "a28696e585e3d843", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fbe59fa6d361a9aa", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/TimeTrackingPage.jsx:3231"}, "properties": {"repobilityId": "895240b763d75376", "scanner": "scanner-primary", "fingerprint": "fbe59fa6d361a9aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4d20fedce89377ee", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CallLogTabV2.jsx:653"}, "properties": {"repobilityId": "94a39f53e9df792a", "scanner": "scanner-primary", "fingerprint": "4d20fedce89377ee", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9be87e31fcad62f9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/TriageInboxTabV2.jsx:303"}, "properties": {"repobilityId": "72067dc63105794d", "scanner": "scanner-primary", "fingerprint": "9be87e31fcad62f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97027cffe7d5f141", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CustomerEstimatesPanel.jsx:239"}, "properties": {"repobilityId": "46a47ca64e981cc4", "scanner": "scanner-primary", "fingerprint": "97027cffe7d5f141", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d59358bdcd8b4cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 client/src/pages/admin/ReviewsPage.jsx:2063"}, "properties": {"repobilityId": "24668ac18ebc27b2", "scanner": "scanner-primary", "fingerprint": "4d59358bdcd8b4cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-064204b6059d0833", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/NewsletterTabs.jsx:1538"}, "properties": {"repobilityId": "dbcb5686c725f9a4", "scanner": "scanner-primary", "fingerprint": "064204b6059d0833", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-408d770287ecc23e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterTabs.jsx:1444"}, "properties": {"repobilityId": "10637c740ccdbdc7", "scanner": "scanner-primary", "fingerprint": "408d770287ecc23e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7e27dc1339534743", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DispatchPageV2.jsx:563"}, "properties": {"repobilityId": "d4f56c5aeea39a17", "scanner": "scanner-primary", "fingerprint": "7e27dc1339534743", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6376fcc2b05af80", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:1748"}, "properties": {"repobilityId": "3d900cfeef4d1d87", "scanner": "scanner-primary", "fingerprint": "a6376fcc2b05af80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-105c7508d0b414ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:2033"}, "properties": {"repobilityId": "07d5c60a9f9e1dc7", "scanner": "scanner-primary", "fingerprint": "105c7508d0b414ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1a059c2041278a4d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/NewsletterPage.jsx:278"}, "properties": {"repobilityId": "f9f12b6d3a924b04", "scanner": "scanner-primary", "fingerprint": "1a059c2041278a4d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ed083fcba26e2375", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/CommunicationsPageV2.jsx:489"}, "properties": {"repobilityId": "80b5c979bb90316e", "scanner": "scanner-primary", "fingerprint": "ed083fcba26e2375", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-86c97bc369622561", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 client/src/pages/admin/SchedulePage.jsx:2804"}, "properties": {"repobilityId": "2374c6cf10cce762", "scanner": "scanner-primary", "fingerprint": "86c97bc369622561", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-86ef021844e3aeb9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/DashboardPageV2.jsx:763"}, "properties": {"repobilityId": "434780fa20e784ed", "scanner": "scanner-primary", "fingerprint": "86ef021844e3aeb9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e90e650a62d2cbb", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 client/src/pages/admin/pipeline/UnifiedPipelineFilters.jsx:22"}, "properties": {"repobilityId": "b4896d40d2aa1511", "scanner": "scanner-primary", "fingerprint": "8e90e650a62d2cbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-40517aa0a50ab158", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 client/src/pages/admin/pipeline/UnifiedPipelineView.jsx:643"}, "properties": {"repobilityId": "d6c3e86b35adf339", "scanner": "scanner-primary", "fingerprint": "40517aa0a50ab158", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2155d40f379bacf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-content-agent.js:22"}, "properties": {"repobilityId": "ab6cc95dc0c3229f", "scanner": "scanner-primary", "fingerprint": "2155d40f379bacf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ca94d8108f77096", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-models.js:49"}, "properties": {"repobilityId": "13dcb8db5f79a81d", "scanner": "scanner-primary", "fingerprint": "6ca94d8108f77096", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e48429cb63201ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/geocode-customers.js:29"}, "properties": {"repobilityId": "d6c8d40263994048", "scanner": "scanner-primary", "fingerprint": "2e48429cb63201ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30c1075858d27793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-retention-agent.js:7"}, "properties": {"repobilityId": "1dd793df065dd7b5", "scanner": "scanner-primary", "fingerprint": "30c1075858d27793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38058c33ecf5f815", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-wiki.js:52"}, "properties": {"repobilityId": "4801b9a5e2145848", "scanner": "scanner-primary", "fingerprint": "38058c33ecf5f815", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b1506f011744ad3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-managed-agent.js:22"}, "properties": {"repobilityId": "fc0ab7fbf2bdbe4a", "scanner": "scanner-primary", "fingerprint": "3b1506f011744ad3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2a7dd1520952596", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-bi-agent.js:7"}, "properties": {"repobilityId": "3cb5c1d7222c77fa", "scanner": "scanner-primary", "fingerprint": "f2a7dd1520952596", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2de154c4b99a7e89", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-backlink-strategy-agent.js:39"}, "properties": {"repobilityId": "e41d45ac48257d33", "scanner": "scanner-primary", "fingerprint": "2de154c4b99a7e89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c4c401a6f2e2821", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-lead-response-agent.js:18"}, "properties": {"repobilityId": "afbee23714f61df3", "scanner": "scanner-primary", "fingerprint": "3c4c401a6f2e2821", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17b21746327c45be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-seo-keywords.js:65"}, "properties": {"repobilityId": "d03fcf6d9787c601", "scanner": "scanner-primary", "fingerprint": "17b21746327c45be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-556581b1987bd1bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-portal-brand.js:150"}, "properties": {"repobilityId": "5d1de879b211d28c", "scanner": "scanner-primary", "fingerprint": "556581b1987bd1bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d6cc7bbcb8d665b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-local-pricing.js:66"}, "properties": {"repobilityId": "eae4454693680bc2", "scanner": "scanner-primary", "fingerprint": "8d6cc7bbcb8d665b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af5ab442cc409178", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-customer-contact-fields.js:147"}, "properties": {"repobilityId": "4463896fb1fa8b1c", "scanner": "scanner-primary", "fingerprint": "af5ab442cc409178", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f7f71d62012d2ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-knowledge-base.js:41"}, "properties": {"repobilityId": "460a226660188d05", "scanner": "scanner-primary", "fingerprint": "2f7f71d62012d2ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8db0a6af4c70792", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-ical-appointments.js:201"}, "properties": {"repobilityId": "24f588367ef550c2", "scanner": "scanner-primary", "fingerprint": "c8db0a6af4c70792", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-798e871b2396fbf9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seeds/002_blog_posts.js:51"}, "properties": {"repobilityId": "43e85ea970ea5685", "scanner": "scanner-primary", "fingerprint": "798e871b2396fbf9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ce4b598af7785bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/export-studio-flow.js:83"}, "properties": {"repobilityId": "dec0d9a501c93d26", "scanner": "scanner-primary", "fingerprint": "4ce4b598af7785bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78ee044734cf7efe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/verify-studio-flow-contract.js:258"}, "properties": {"repobilityId": "a83f6c143c053764", "scanner": "scanner-primary", "fingerprint": "78ee044734cf7efe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95d4a6e268b78e55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/set-inbound-voice-url.js:95"}, "properties": {"repobilityId": "4f0d0d39ebb56e70", "scanner": "scanner-primary", "fingerprint": "95d4a6e268b78e55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a6b29e35a384257", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/twilio/audit-inbound-routing.js:257"}, "properties": {"repobilityId": "62cc76c8151c120e", "scanner": "scanner-primary", "fingerprint": "2a6b29e35a384257", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15bcc85548b6b67b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/verify-vendor.js:62"}, "properties": {"repobilityId": "51cbded0e4bf6761", "scanner": "scanner-primary", "fingerprint": "15bcc85548b6b67b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd2f25d870651517", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/blog-schema/scripts/sync-from-astro.js:52"}, "properties": {"repobilityId": "ca51065aeb153020", "scanner": "scanner-primary", "fingerprint": "dd2f25d870651517", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-896997a1bc0cbded", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/knexfile.js:29"}, "properties": {"repobilityId": "3a7a3702bfb53db9", "scanner": "scanner-primary", "fingerprint": "896997a1bc0cbded", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03ca6dfcae0d94b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.js:44"}, "properties": {"repobilityId": "649f39e0552257f8", "scanner": "scanner-primary", "fingerprint": "03ca6dfcae0d94b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69a50e6f18927dbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000010_tree_shrub_typed_cutover.js:70"}, "properties": {"repobilityId": "c4016e4138e1e16d", "scanner": "scanner-primary", "fingerprint": "69a50e6f18927dbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-988c5f2acfb767aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000001_bait_station_typed_flows.js:82"}, "properties": {"repobilityId": "d88f9c968ce6fc28", "scanner": "scanner-primary", "fingerprint": "988c5f2acfb767aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d5a1b6a57356831", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000011_pest_landscape_complexity_tiers.js:35"}, "properties": {"repobilityId": "60bc681709314801", "scanner": "scanner-primary", "fingerprint": "2d5a1b6a57356831", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45b0506a40c517ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000001_newsletter_slug_indexability.js:59"}, "properties": {"repobilityId": "057a30b0a0d1b09e", "scanner": "scanner-primary", "fingerprint": "45b0506a40c517ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40b354fc36f80c8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000007_seed_scrape_sources_round2.js:103"}, "properties": {"repobilityId": "001d35c1e582f55e", "scanner": "scanner-primary", "fingerprint": "40b354fc36f80c8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16ea6bb2b2c0c823", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000003_event_ingestion_foundation.js:138"}, "properties": {"repobilityId": "bb1a9c5c1af0bf1a", "scanner": "scanner-primary", "fingerprint": "16ea6bb2b2c0c823", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b305f9b30de15dd0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:64"}, "properties": {"repobilityId": "6bf8863c020dc569", "scanner": "scanner-primary", "fingerprint": "b305f9b30de15dd0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b14cb026f40a562e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000004_termite_install_pricing_april_2026.js:61"}, "properties": {"repobilityId": "311a1bceada9ba05", "scanner": "scanner-primary", "fingerprint": "b14cb026f40a562e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3a78a682bb6d932", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/models/migrations/20260401000069_tax_intelligence.js:80"}, "properties": {"repobilityId": "796c5552639d1e4f", "scanner": "scanner-primary", "fingerprint": "f3a78a682bb6d932", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3ec8ce77226ab137", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260615000001_link_pest_rodent_service_suffix_rows.js:34"}, "properties": {"repobilityId": "c0311d9f948a14b2", "scanner": "scanner-primary", "fingerprint": "3ec8ce77226ab137", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bec258c77916686a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000023_termite_bait_graduation.js:62"}, "properties": {"repobilityId": "cc5efbf1a3ca2864", "scanner": "scanner-primary", "fingerprint": "bec258c77916686a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f88ddce26438e11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:75"}, "properties": {"repobilityId": "fcf7d9039c17d75a", "scanner": "scanner-primary", "fingerprint": "0f88ddce26438e11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9777675209d329d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260424000011_backfill_followup_next_touch_at.js:65"}, "properties": {"repobilityId": "952abce4407267d2", "scanner": "scanner-primary", "fingerprint": "9777675209d329d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6899a1d6448aa114", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000001_wordpress_fleet_monitoring.js:122"}, "properties": {"repobilityId": "c05130c722af145c", "scanner": "scanner-primary", "fingerprint": "6899a1d6448aa114", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1edafff272a54527", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000007_subscriber_region_zone.js:46"}, "properties": {"repobilityId": "24183665f3be7bad", "scanner": "scanner-primary", "fingerprint": "1edafff272a54527", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-511c89a3667070e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000005_seed_scrape_event_sources.js:54"}, "properties": {"repobilityId": "70ab7f1aa48fde3a", "scanner": "scanner-primary", "fingerprint": "511c89a3667070e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63e1142b0e25ffb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000009_review_dup_row_cleanup.js:81"}, "properties": {"repobilityId": "1149b372a08d0a76", "scanner": "scanner-primary", "fingerprint": "63e1142b0e25ffb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5bedfd599dfed12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000003_backfill_call_log_to_phone_e164.js:50"}, "properties": {"repobilityId": "4499f69279760676", "scanner": "scanner-primary", "fingerprint": "b5bedfd599dfed12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19f9747d9ce8c059", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260427000004_seed_ical_event_sources.js:60"}, "properties": {"repobilityId": "1d9423f99b797c40", "scanner": "scanner-primary", "fingerprint": "19f9747d9ce8c059", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0749b08dd764d8c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000012_rodent_family_typed_cutover.js:80"}, "properties": {"repobilityId": "b4de75c5205407f8", "scanner": "scanner-primary", "fingerprint": "0749b08dd764d8c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c21f3c90e8cf53c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:37"}, "properties": {"repobilityId": "ec0e696af211fbd6", "scanner": "scanner-primary", "fingerprint": "6c21f3c90e8cf53c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b70423699e29d44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260611000012_specialty_phase1_cutover.js:152"}, "properties": {"repobilityId": "db36d43fa546a058", "scanner": "scanner-primary", "fingerprint": "7b70423699e29d44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98c2758070830b9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260525000002_seed_event_sources_round3.js:127"}, "properties": {"repobilityId": "da111572624a9b58", "scanner": "scanner-primary", "fingerprint": "98c2758070830b9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cb00c39c316dcf5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260408000002_multi_domain_seo.js:92"}, "properties": {"repobilityId": "328d7550009c6098", "scanner": "scanner-primary", "fingerprint": "4cb00c39c316dcf5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05c54dbecb66318b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260428000005_mark_externally_replied_reviews.js:50"}, "properties": {"repobilityId": "e939f275a3bc5118", "scanner": "scanner-primary", "fingerprint": "05c54dbecb66318b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-032ba5b00e830bea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000031_combined_service_cutover.js:149"}, "properties": {"repobilityId": "2444cb82cc2f0805", "scanner": "scanner-primary", "fingerprint": "032ba5b00e830bea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ea89027770d1385", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/models/migrations/20260612000013_flea_typed_cutover.js:58"}, "properties": {"repobilityId": "94e21816edf97f0f", "scanner": "scanner-primary", "fingerprint": "5ea89027770d1385", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1442e766cb6a234c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/config/feature-gates.js:235"}, "properties": {"repobilityId": "854dd05123932606", "scanner": "scanner-primary", "fingerprint": "1442e766cb6a234c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7a88c44793c88df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine-v1-adapter.regression.test.js:314"}, "properties": {"repobilityId": "c6e69b7f0abe2fd6", "scanner": "scanner-primary", "fingerprint": "e7a88c44793c88df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1bc036daf477a52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/pricing-engine.regression.test.js:397"}, "properties": {"repobilityId": "7dba2ffc9688077d", "scanner": "scanner-primary", "fingerprint": "d1bc036daf477a52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29764459ea2db273", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/tests/fixtures/regenerate-lawn-golden-master.js:52"}, "properties": {"repobilityId": "591abc60e5a37e1c", "scanner": "scanner-primary", "fingerprint": "29764459ea2db273", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99e6ca6d5205a69c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/generate-indexnow-key.js:30"}, "properties": {"repobilityId": "03baab367a4f4f04", "scanner": "scanner-primary", "fingerprint": "99e6ca6d5205a69c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d0a189dee768901", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/v2-promotion-readiness.js:75"}, "properties": {"repobilityId": "a4a30d493b329cf7", "scanner": "scanner-primary", "fingerprint": "3d0a189dee768901", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8afa4971e80b9143", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/approve-autonomous-run.js:51"}, "properties": {"repobilityId": "63959388c9264c4a", "scanner": "scanner-primary", "fingerprint": "8afa4971e80b9143", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c67997a9814916e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-gemini-extraction.js:19"}, "properties": {"repobilityId": "05cfb84c53fe4f3b", "scanner": "scanner-primary", "fingerprint": "7c67997a9814916e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2229f336da9c86c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-orphan-call-log-rows.js:54"}, "properties": {"repobilityId": "c2a698e960b68fa8", "scanner": "scanner-primary", "fingerprint": "2229f336da9c86c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a06ea0c72fe4757", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/void-invoice-95304c72.js:26"}, "properties": {"repobilityId": "bbf12d92cd9c9772", "scanner": "scanner-primary", "fingerprint": "4a06ea0c72fe4757", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35780de0355ee5d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-estimate-conversion-agent.js:153"}, "properties": {"repobilityId": "d917206be88ff8ec", "scanner": "scanner-primary", "fingerprint": "35780de0355ee5d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-974d540250c804cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-call-route-decisions.js:154"}, "properties": {"repobilityId": "0e4e15febc1ebce7", "scanner": "scanner-primary", "fingerprint": "974d540250c804cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56f1aa7b50aa8d11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-existing-pages.js:193"}, "properties": {"repobilityId": "ecf82797163f99a2", "scanner": "scanner-primary", "fingerprint": "56f1aa7b50aa8d11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f38bc5971031676f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-lead-activities-from-sms.js:74"}, "properties": {"repobilityId": "906de86b8e5ef66c", "scanner": "scanner-primary", "fingerprint": "f38bc5971031676f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8610e95bd2a810d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-spoke-topics.js:40"}, "properties": {"repobilityId": "fa435cec935993bc", "scanner": "scanner-primary", "fingerprint": "8610e95bd2a810d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c3aade7ba977d08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/evaluate-agent-decision-fixtures.js:38"}, "properties": {"repobilityId": "7f8e131bb98f3f00", "scanner": "scanner-primary", "fingerprint": "7c3aade7ba977d08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff9bb030f6a5fdc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check-index-status.js:68"}, "properties": {"repobilityId": "0108d531ece20556", "scanner": "scanner-primary", "fingerprint": "ff9bb030f6a5fdc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29c943ab2f72877b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/check-content-registry-live-status.js:46"}, "properties": {"repobilityId": "8d1b696fa2bc48ad", "scanner": "scanner-primary", "fingerprint": "29c943ab2f72877b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bbacda7b74fef04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-internal-link-prs.js:50"}, "properties": {"repobilityId": "c868e61c3425851a", "scanner": "scanner-primary", "fingerprint": "7bbacda7b74fef04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cdb9d2f5c7d8e4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/import-gsc-links.js:38"}, "properties": {"repobilityId": "5e53f8a651b816c3", "scanner": "scanner-primary", "fingerprint": "5cdb9d2f5c7d8e4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa5b8eb3c0a6ad41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-bank-audit.js:44"}, "properties": {"repobilityId": "58221e0d854b37db", "scanner": "scanner-primary", "fingerprint": "aa5b8eb3c0a6ad41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bdb0674555e5c92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-serp-profiler.js:101"}, "properties": {"repobilityId": "adb723cded252b5a", "scanner": "scanner-primary", "fingerprint": "6bdb0674555e5c92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca0f40eb4693d0f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-autonomous-next.js:54"}, "properties": {"repobilityId": "70c6677b808a3002", "scanner": "scanner-primary", "fingerprint": "ca0f40eb4693d0f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80215fe0c7c1109a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline-worker.js:28"}, "properties": {"repobilityId": "9ee3b7d1c35a2d28", "scanner": "scanner-primary", "fingerprint": "80215fe0c7c1109a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f31c66eda2ce4fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-broken-pdfs.js:63"}, "properties": {"repobilityId": "88ba5d55ae80f05c", "scanner": "scanner-primary", "fingerprint": "4f31c66eda2ce4fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a254494225e0872", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/import-claudeopedia-lawn-kb.js:73"}, "properties": {"repobilityId": "63d54f693411e2bb", "scanner": "scanner-primary", "fingerprint": "9a254494225e0872", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3be7f588ce3635a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/facts-population-worklist.js:46"}, "properties": {"repobilityId": "d7042c7244f6d203", "scanner": "scanner-primary", "fingerprint": "b3be7f588ce3635a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30081817cceb5d00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/protected-pages.js:32"}, "properties": {"repobilityId": "b9d07d10395cf10e", "scanner": "scanner-primary", "fingerprint": "30081817cceb5d00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b2f11f6e36195ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/archive-stale-blog-rows.js:296"}, "properties": {"repobilityId": "1ba6fc658065905a", "scanner": "scanner-primary", "fingerprint": "5b2f11f6e36195ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9847f904cc7d37b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-call-extraction-replay-eval.js:42"}, "properties": {"repobilityId": "eb2318503a20fbcd", "scanner": "scanner-primary", "fingerprint": "b9847f904cc7d37b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b79a24638f57069", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/dump-unmapped-call-numbers.js:73"}, "properties": {"repobilityId": "a4610e493770e06d", "scanner": "scanner-primary", "fingerprint": "0b79a24638f57069", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d545dbf2504753b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-agent-dispatch.js:71"}, "properties": {"repobilityId": "14ad95b8a07d7fc0", "scanner": "scanner-primary", "fingerprint": "d545dbf2504753b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-715f611072bb6f27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-interior-reentry-advisory.js:136"}, "properties": {"repobilityId": "f59c43a3c1f200e0", "scanner": "scanner-primary", "fingerprint": "715f611072bb6f27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d2e744ef79755bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-job-form-templates.js:357"}, "properties": {"repobilityId": "d6679a8f446806c5", "scanner": "scanner-primary", "fingerprint": "6d2e744ef79755bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b242f5ff0992a6a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-seo-pipeline.js:27"}, "properties": {"repobilityId": "8ecfcf57985b482c", "scanner": "scanner-primary", "fingerprint": "b242f5ff0992a6a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82da3257be37d384", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/autonomous-engine-calibration.js:650"}, "properties": {"repobilityId": "4b9c337436ab7e02", "scanner": "scanner-primary", "fingerprint": "82da3257be37d384", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f225dd5486fbfa7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-products-data-quality.js:42"}, "properties": {"repobilityId": "46d6261a76c36410", "scanner": "scanner-primary", "fingerprint": "5f225dd5486fbfa7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae07b84504947cf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-briefs.js:57"}, "properties": {"repobilityId": "e86ae323c09f1798", "scanner": "scanner-primary", "fingerprint": "ae07b84504947cf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c6e90917951d5e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/preview-internal-links.js:58"}, "properties": {"repobilityId": "4127f5c2441345d2", "scanner": "scanner-primary", "fingerprint": "7c6e90917951d5e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-202eff7da3c0bc1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-waveguard-protocol-material-costs.js:172"}, "properties": {"repobilityId": "57addd4393b40d9f", "scanner": "scanner-primary", "fingerprint": "202eff7da3c0bc1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-96e2dd91fa87f738", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-competitor-gap-topics.js:80"}, "properties": {"repobilityId": "38c4d53bc5083319", "scanner": "scanner-primary", "fingerprint": "96e2dd91fa87f738", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5689bd26fd12ec21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/cleanup-one-time-placeholder-recurring.js:445"}, "properties": {"repobilityId": "e012541379f76ed5", "scanner": "scanner-primary", "fingerprint": "5689bd26fd12ec21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fdee2b25a0e8b32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-opportunity-miner.js:50"}, "properties": {"repobilityId": "2a85402377d6cdce", "scanner": "scanner-primary", "fingerprint": "8fdee2b25a0e8b32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d93eb8b3569ec2e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/export-agent-decision-fixtures.js:63"}, "properties": {"repobilityId": "67904ec7ed21145a", "scanner": "scanner-primary", "fingerprint": "d93eb8b3569ec2e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81d38a2a32c5e793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/verify-v2-shadow-path.js:36"}, "properties": {"repobilityId": "0d97ff2a8ecaa938", "scanner": "scanner-primary", "fingerprint": "81d38a2a32c5e793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c248ef2614c782f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-incident-eval.js:54"}, "properties": {"repobilityId": "a1aa3b8022e88501", "scanner": "scanner-primary", "fingerprint": "c248ef2614c782f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0be4ecfe577e5e1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-customer-insights.js:50"}, "properties": {"repobilityId": "2d4548952f348fa4", "scanner": "scanner-primary", "fingerprint": "0be4ecfe577e5e1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd6ed788e58f0941", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-card-funding.js:44"}, "properties": {"repobilityId": "e33524ebdabdadb0", "scanner": "scanner-primary", "fingerprint": "dd6ed788e58f0941", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42e755f4cc9cc36b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-prod-pricing-config.js:149"}, "properties": {"repobilityId": "f42f35fa9ac7bd06", "scanner": "scanner-primary", "fingerprint": "42e755f4cc9cc36b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b605b91a4c25986", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/sync-content-registry.js:69"}, "properties": {"repobilityId": "f85b096b40d12c20", "scanner": "scanner-primary", "fingerprint": "1b605b91a4c25986", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fab2deb3517d9953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-comms-pr2.js:83"}, "properties": {"repobilityId": "b2f9dfb560ecfe49", "scanner": "scanner-primary", "fingerprint": "fab2deb3517d9953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8d5ba9f37d00764", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/test-image-generator.js:53"}, "properties": {"repobilityId": "01facf64f4f5ab42", "scanner": "scanner-primary", "fingerprint": "d8d5ba9f37d00764", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b9feeece4049a93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/migrate-beehiiv-subscribers.js:254"}, "properties": {"repobilityId": "1cea7c2390487c80", "scanner": "scanner-primary", "fingerprint": "3b9feeece4049a93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b6bb8215a2882e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/export-reply-training-fixtures.js:55"}, "properties": {"repobilityId": "656cf2f438bb5e20", "scanner": "scanner-primary", "fingerprint": "0b6bb8215a2882e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d14a2cd77fc6d03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/impact-tracker.js:27"}, "properties": {"repobilityId": "96aa9febd4a81a6d", "scanner": "scanner-primary", "fingerprint": "d14a2cd77fc6d03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-461d98838f31ca58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/smoke-lead-estimate-automation.js:192"}, "properties": {"repobilityId": "11d6f6709bda5216", "scanner": "scanner-primary", "fingerprint": "461d98838f31ca58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-810f88b02346d57b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/run-conversion-feedback.js:49"}, "properties": {"repobilityId": "1ddf6bc16c3c2afc", "scanner": "scanner-primary", "fingerprint": "810f88b02346d57b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b247ba9691315cff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/replay-call-extraction-variance.js:670"}, "properties": {"repobilityId": "170ea68a28445049", "scanner": "scanner-primary", "fingerprint": "b247ba9691315cff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbf210754b087f0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/backfill-invoice-followups.js:52"}, "properties": {"repobilityId": "00be6035777e23c2", "scanner": "scanner-primary", "fingerprint": "cbf210754b087f0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f0d7d59ff97f3fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/contract-test-address-validation.js:22"}, "properties": {"repobilityId": "36c7b627464cb2d8", "scanner": "scanner-primary", "fingerprint": "2f0d7d59ff97f3fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05eaa3b058f2255f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/audit-inventory-data-completion.js:89"}, "properties": {"repobilityId": "ea35f953087d633c", "scanner": "scanner-primary", "fingerprint": "05eaa3b058f2255f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1aa7580e7ef3145a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/scripts/seed-intercept-briefs.js:41"}, "properties": {"repobilityId": "50a174dafe2f1672", "scanner": "scanner-primary", "fingerprint": "1aa7580e7ef3145a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f86bbb19c6cbab4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/property-lookup-v2.js:296"}, "properties": {"repobilityId": "88c0800b7d554fb0", "scanner": "scanner-primary", "fingerprint": "9f86bbb19c6cbab4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ab04e56e4e3434d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/admin-seo-v2.js:441"}, "properties": {"repobilityId": "a61267fe98df5556", "scanner": "scanner-primary", "fingerprint": "0ab04e56e4e3434d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19d2e71163bf4480", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/routes/admin-health.js:34"}, "properties": {"repobilityId": "3a454253d4a63023", "scanner": "scanner-primary", "fingerprint": "19d2e71163bf4480", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3d48570171b72a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/schedule.js:129"}, "properties": {"repobilityId": "cd3895f4c39b0580", "scanner": "scanner-primary", "fingerprint": "f3d48570171b72a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2deab13350fed1b2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/routes/admin-inventory.js:2486"}, "properties": {"repobilityId": "e8d534373277f091", "scanner": "scanner-primary", "fingerprint": "2deab13350fed1b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-eb703600619f510d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/contract-tests/index.js:33"}, "properties": {"repobilityId": "095e742ea21a0fa1", "scanner": "scanner-primary", "fingerprint": "eb703600619f510d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6050253658ad509d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/contract-tests/reporters/console.js:40"}, "properties": {"repobilityId": "5e68cbd198aa00fc", "scanner": "scanner-primary", "fingerprint": "6050253658ad509d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-251e13f851f57edc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/services/estimate-slot-availability.js:1142"}, "properties": {"repobilityId": "f3ef7156bbde1a43", "scanner": "scanner-primary", "fingerprint": "251e13f851f57edc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c0f42c276280a2fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/test-engine.js:15"}, "properties": {"repobilityId": "d39a868645ab59c0", "scanner": "scanner-primary", "fingerprint": "c0f42c276280a2fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8279c1c1bc7a477f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server/services/pricing-engine/db-bridge.js:1492"}, "properties": {"repobilityId": "9471eb38c3647882", "scanner": "scanner-primary", "fingerprint": "8279c1c1bc7a477f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df2a32198809f5e0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 server/services/pricing-engine/constants.js:21"}, "properties": {"repobilityId": "99571b7497241418", "scanner": "scanner-primary", "fingerprint": "df2a32198809f5e0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-f5ec167976bde728", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in monitor-deploy.js:12"}, "properties": {"repobilityId": "e24bc1d8fe57b283", "scanner": "scanner-primary", "fingerprint": "f5ec167976bde728", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "monitor-deploy.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-f6d5b94f9adf7487", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in monitor-deploy.js:1"}, "properties": {"repobilityId": "99d4fb3539df0e10", "scanner": "scanner-primary", "fingerprint": "f6d5b94f9adf7487", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "monitor-deploy.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f14c9bc6963148c3", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in AGENTS.md:279"}, "properties": {"repobilityId": "4d18918c5d0772da", "scanner": "scanner-primary", "fingerprint": "f14c9bc6963148c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 279}}}]}, {"ruleId": "scanner-83788bf7c9f5d317", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/utils/api.js:17"}, "properties": {"repobilityId": "d8325a002fb569b6", "scanner": "scanner-primary", "fingerprint": "83788bf7c9f5d317", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/utils/api.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-b4c61ad75e254150", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in client/src/pages/ReportViewPage.jsx:4493"}, "properties": {"repobilityId": "ecb917f7c0fb3676", "scanner": "scanner-primary", "fingerprint": "b4c61ad75e254150", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/ReportViewPage.jsx"}, "region": {"startLine": 4493}}}]}, {"ruleId": "scanner-93c99d6302536cd9", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in client/src/pages/AdminLoginPage.jsx:29"}, "properties": {"repobilityId": "521ae90235a24a7a", "scanner": "scanner-primary", "fingerprint": "93c99d6302536cd9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/src/pages/AdminLoginPage.jsx"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-ae2659f7c61ae570", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/scripts/import-claudeopedia-lawn-kb.js:16"}, "properties": {"repobilityId": "0efd766abc77aec2", "scanner": "scanner-primary", "fingerprint": "ae2659f7c61ae570", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/scripts/import-claudeopedia-lawn-kb.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-3011453bd50e09a7", "level": "error", "message": {"text": "Possible secret in server/routes/admin-inventory.js"}, "properties": {"repobilityId": "1d818346b66f88b4", "scanner": "scanner-primary", "fingerprint": "3011453bd50e09a7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/admin-inventory.js"}, "region": {"startLine": 1055}}}]}, {"ruleId": "scanner-c8bd706951dfe703", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in server/routes/estimate-public.js:4237"}, "properties": {"repobilityId": "c5240e74719212e5", "scanner": "scanner-primary", "fingerprint": "c8bd706951dfe703", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/routes/estimate-public.js"}, "region": {"startLine": 4237}}}]}, {"ruleId": "scanner-c7bb51115763357a", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/services/lawn-snapshot.js:373"}, "properties": {"repobilityId": "5bab95e9ce14b666", "scanner": "scanner-primary", "fingerprint": "c7bb51115763357a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/lawn-snapshot.js"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-ac5c7271ce66fc46", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server/services/lawn-recommendation-engine.js:256"}, "properties": {"repobilityId": "e951e3e46c365bbf", "scanner": "scanner-primary", "fingerprint": "ac5c7271ce66fc46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/lawn-recommendation-engine.js"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-99f16df17a670212", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server/services/content/content-registry.js:7"}, "properties": {"repobilityId": "59d5e1a03b70e973", "scanner": "scanner-primary", "fingerprint": "99f16df17a670212", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/services/content/content-registry.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-1df040180fcf8760", "level": "note", "message": {"text": "Very large file: client/src/components/schedule/CreateAppointmentModal.jsx (1990 lines)"}, "properties": {"repobilityId": "76704fe66ce2d5ec", "scanner": "scanner-primary", "fingerprint": "1df040180fcf8760", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb3a545069aba09d", "level": "note", "message": {"text": "Very large file: client/src/components/tech/CreateProjectModal.jsx (1252 lines)"}, "properties": {"repobilityId": "93899867eb902e37", "scanner": "scanner-primary", "fingerprint": "cb3a545069aba09d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c04b70cd994f0d0d", "level": "note", "message": {"text": "Very large file: client/src/components/admin/PricingLogicPanel.jsx (2556 lines)"}, "properties": {"repobilityId": "1beee79a833e04e6", "scanner": "scanner-primary", "fingerprint": "c04b70cd994f0d0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47f7b9e4a38107bb", "level": "note", "message": {"text": "Very large file: client/src/components/admin/Customer360ProfileV2.jsx (4208 lines)"}, "properties": {"repobilityId": "504d82996621b9c9", "scanner": "scanner-primary", "fingerprint": "47f7b9e4a38107bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10e95896282bff06", "level": "note", "message": {"text": "Very large file: client/src/lib/estimateEngine.js (2674 lines)"}, "properties": {"repobilityId": "414496abeab241f1", "scanner": "scanner-primary", "fingerprint": "10e95896282bff06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-051da3aaf60336f0", "level": "note", "message": {"text": "Very large file: client/src/pages/ReportViewPage.jsx (7701 lines)"}, "properties": {"repobilityId": "ef75f7dca16b03fa", "scanner": "scanner-primary", "fingerprint": "051da3aaf60336f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b123f71b248f9c0b", "level": "note", "message": {"text": "Very large file: client/src/pages/PortalPage.jsx (11296 lines)"}, "properties": {"repobilityId": "201dbea30244cedd", "scanner": "scanner-primary", "fingerprint": "b123f71b248f9c0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10cd96645320ab67", "level": "note", "message": {"text": "Very large file: client/src/pages/ProjectReportViewPage.jsx (1281 lines)"}, "properties": {"repobilityId": "cacedfab5767f57e", "scanner": "scanner-primary", "fingerprint": "10cd96645320ab67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-43ce91096f35571e", "level": "note", "message": {"text": "Very large file: client/src/pages/OnboardingPage.jsx (1411 lines)"}, "properties": {"repobilityId": "2878660a1fba2490", "scanner": "scanner-primary", "fingerprint": "43ce91096f35571e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-74654a4579eb96e4", "level": "note", "message": {"text": "Very large file: client/src/pages/QuotePage.jsx (1365 lines)"}, "properties": {"repobilityId": "3322b6772efba5a2", "scanner": "scanner-primary", "fingerprint": "74654a4579eb96e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-918c8bb354f9b144", "level": "note", "message": {"text": "Very large file: client/src/pages/EstimateViewPage.jsx (2602 lines)"}, "properties": {"repobilityId": "206148ae10e7e806", "scanner": "scanner-primary", "fingerprint": "918c8bb354f9b144", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6cca03ecef311bcd", "level": "note", "message": {"text": "Very large file: client/src/pages/PayPageV2.jsx (1598 lines)"}, "properties": {"repobilityId": "e1bde602375d281d", "scanner": "scanner-primary", "fingerprint": "6cca03ecef311bcd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15ea31b9b32f38d1", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/BlogPage.jsx (2946 lines)"}, "properties": {"repobilityId": "449bade091c3841a", "scanner": "scanner-primary", "fingerprint": "15ea31b9b32f38d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cf2d28498892e1b2", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CustomersPageV2.jsx (2127 lines)"}, "properties": {"repobilityId": "d280e70fd9d254da", "scanner": "scanner-primary", "fingerprint": "cf2d28498892e1b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eca657853bf05e38", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/SEOPage.jsx (6348 lines)"}, "properties": {"repobilityId": "6adf9886951e3c1e", "scanner": "scanner-primary", "fingerprint": "eca657853bf05e38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4bf93e512c2d5b04", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EmailTemplatesPanelV2.jsx (2673 lines)"}, "properties": {"repobilityId": "9ffa3f4160c41d7a", "scanner": "scanner-primary", "fingerprint": "4bf93e512c2d5b04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4ba39e0c01d5905", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EstimatePage.jsx (7108 lines)"}, "properties": {"repobilityId": "e763c76664cadd17", "scanner": "scanner-primary", "fingerprint": "d4ba39e0c01d5905", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a55feacb2d1aa89", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ServiceLibraryPage.jsx (1918 lines)"}, "properties": {"repobilityId": "4dcc8cd4597489ed", "scanner": "scanner-primary", "fingerprint": "0a55feacb2d1aa89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be4efd087ce99c83", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EstimateToolViewV2.jsx (7310 lines)"}, "properties": {"repobilityId": "97839e9bddfbd561", "scanner": "scanner-primary", "fingerprint": "be4efd087ce99c83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-73452eb01884824b", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/LawnAssessmentPanel.jsx (1724 lines)"}, "properties": {"repobilityId": "277ab705cce521b8", "scanner": "scanner-primary", "fingerprint": "73452eb01884824b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b98599321468ce65", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/TaxPage.jsx (3784 lines)"}, "properties": {"repobilityId": "afab1eb192536fed", "scanner": "scanner-primary", "fingerprint": "b98599321468ce65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a494be93958220b4", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CustomerHealthTabs.jsx (1730 lines)"}, "properties": {"repobilityId": "ae4cb2ace0435758", "scanner": "scanner-primary", "fingerprint": "a494be93958220b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3d966c7a6a97935", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/LawnProtocolCommandCenterPage.jsx (1663 lines)"}, "properties": {"repobilityId": "44be4f7b9c887ab6", "scanner": "scanner-primary", "fingerprint": "d3d966c7a6a97935", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-96d88c017924c481", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/TimeTrackingPage.jsx (4791 lines)"}, "properties": {"repobilityId": "3c8134738f85584c", "scanner": "scanner-primary", "fingerprint": "96d88c017924c481", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6243d2c4443a29b4", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/InventoryPage.jsx (5371 lines)"}, "properties": {"repobilityId": "56bad34f5c867423", "scanner": "scanner-primary", "fingerprint": "6243d2c4443a29b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c9fdbee9e82f4ae3", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CallLogTabV2.jsx (1312 lines)"}, "properties": {"repobilityId": "b1ccc9a7f10a2209", "scanner": "scanner-primary", "fingerprint": "c9fdbee9e82f4ae3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba285c00a5723fed", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/LeadsTabs.jsx (3937 lines)"}, "properties": {"repobilityId": "f2427403ff383472", "scanner": "scanner-primary", "fingerprint": "ba285c00a5723fed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d664efdb49a22edf", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CommunicationsPage.jsx (3405 lines)"}, "properties": {"repobilityId": "da85836ecd0647fa", "scanner": "scanner-primary", "fingerprint": "d664efdb49a22edf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0c78bf2853fe8b3b", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/GBPManagement.jsx (2206 lines)"}, "properties": {"repobilityId": "6254cccfd2b43c62", "scanner": "scanner-primary", "fingerprint": "0c78bf2853fe8b3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f169c37bc77e336b", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/BankingPage.jsx (1832 lines)"}, "properties": {"repobilityId": "27b0ae875dc0192f", "scanner": "scanner-primary", "fingerprint": "f169c37bc77e336b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a13ccc29c47bb69b", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ReviewsPage.jsx (3530 lines)"}, "properties": {"repobilityId": "a0b8f50cc5f707ca", "scanner": "scanner-primary", "fingerprint": "a13ccc29c47bb69b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d2d04cc7b0406f0", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/NewsletterTabs.jsx (2257 lines)"}, "properties": {"repobilityId": "695e3a01d5cdcfbf", "scanner": "scanner-primary", "fingerprint": "9d2d04cc7b0406f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b7fd3553759c9aea", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/AdminInvoicesPage.jsx (5345 lines)"}, "properties": {"repobilityId": "c3a8a73639e916d9", "scanner": "scanner-primary", "fingerprint": "b7fd3553759c9aea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98735f1c40fb7208", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/AdsPage.jsx (4475 lines)"}, "properties": {"repobilityId": "6a1d745e37f9b12c", "scanner": "scanner-primary", "fingerprint": "98735f1c40fb7208", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a56f1af10f846dcb", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EquipmentMaintenancePage.jsx (2771 lines)"}, "properties": {"repobilityId": "127e00a26be7d750", "scanner": "scanner-primary", "fingerprint": "a56f1af10f846dcb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c37716b929a8fa0f", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/DispatchPageV2.jsx (2564 lines)"}, "properties": {"repobilityId": "837c46d9ac187d93", "scanner": "scanner-primary", "fingerprint": "c37716b929a8fa0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60e0f1417528c179", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ProjectsPage.jsx (3224 lines)"}, "properties": {"repobilityId": "99e3eec248178666", "scanner": "scanner-primary", "fingerprint": "60e0f1417528c179", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85575fa6072ba99d", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ReviewVelocityEngine.jsx (2174 lines)"}, "properties": {"repobilityId": "856c1baffcd3f75f", "scanner": "scanner-primary", "fingerprint": "85575fa6072ba99d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a08f7c0406820c74", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CustomersPage.jsx (2369 lines)"}, "properties": {"repobilityId": "9a00487fca66b363", "scanner": "scanner-primary", "fingerprint": "a08f7c0406820c74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6360187625891f4a", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EstimatesPageV2.jsx (3787 lines)"}, "properties": {"repobilityId": "c1cb86a1e3ce547f", "scanner": "scanner-primary", "fingerprint": "6360187625891f4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67af2dc3fa1886be", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/NewsletterPage.jsx (1624 lines)"}, "properties": {"repobilityId": "29c7eb69e4c2a1c3", "scanner": "scanner-primary", "fingerprint": "67af2dc3fa1886be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-597667a4d306403a", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CommunicationsPageV2.jsx (2289 lines)"}, "properties": {"repobilityId": "a82c6f3e6c288704", "scanner": "scanner-primary", "fingerprint": "597667a4d306403a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed7139e788a59e21", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/SocialMediaPage.jsx (2555 lines)"}, "properties": {"repobilityId": "0f73b8e26ea9e3bc", "scanner": "scanner-primary", "fingerprint": "ed7139e788a59e21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bb2bd4c8d110e587", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/ReferralsPageV2.jsx (1741 lines)"}, "properties": {"repobilityId": "cb51c2b88c106149", "scanner": "scanner-primary", "fingerprint": "bb2bd4c8d110e587", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b4fd293ac319c0a1", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/CustomerHealthPage.jsx (1797 lines)"}, "properties": {"repobilityId": "44a5620c0aa10f98", "scanner": "scanner-primary", "fingerprint": "b4fd293ac319c0a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6b2f63ea6fc88c73", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/SchedulePage.jsx (13264 lines)"}, "properties": {"repobilityId": "0bc57b6199bf1fa1", "scanner": "scanner-primary", "fingerprint": "6b2f63ea6fc88c73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-703857d0d4378557", "level": "note", "message": {"text": "Very large file: client/src/pages/admin/EmailPage.jsx (1690 lines)"}, "properties": {"repobilityId": "78f54d7fa155d31f", "scanner": "scanner-primary", "fingerprint": "703857d0d4378557", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7e00491c5e1b63a6", "level": "note", "message": {"text": "Very large file: server/tests/service-report-v1.test.js (2514 lines)"}, "properties": {"repobilityId": "e9fa9b196673583e", "scanner": "scanner-primary", "fingerprint": "7e00491c5e1b63a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-64e98071f879b1fc", "level": "note", "message": {"text": "Very large file: server/tests/estimate-public-onetime-breakdown.test.js (5659 lines)"}, "properties": {"repobilityId": "c8797d165925c8a5", "scanner": "scanner-primary", "fingerprint": "64e98071f879b1fc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8d7ffe51d40b42c9", "level": "note", "message": {"text": "Very large file: server/tests/autonomous-runner.test.js (2253 lines)"}, "properties": {"repobilityId": "1f7932a531375bb6", "scanner": "scanner-primary", "fingerprint": "8d7ffe51d40b42c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4530a2d8031aa77d", "level": "note", "message": {"text": "Very large file: server/tests/newsletter.test.js (2241 lines)"}, "properties": {"repobilityId": "219353c3a8454a0f", "scanner": "scanner-primary", "fingerprint": "4530a2d8031aa77d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd0fe98c069ea04a", "level": "note", "message": {"text": "Very large file: server/tests/estimate-deposits.test.js (1313 lines)"}, "properties": {"repobilityId": "6f63ea9f688460c2", "scanner": "scanner-primary", "fingerprint": "bd0fe98c069ea04a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69f46098e9e26ebb", "level": "note", "message": {"text": "Very large file: server/tests/blog-astro-pipeline.test.js (1942 lines)"}, "properties": {"repobilityId": "6d4f5f2211449381", "scanner": "scanner-primary", "fingerprint": "69f46098e9e26ebb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91d96b7936b240cf", "level": "note", "message": {"text": "Very large file: server/routes/admin-dispatch.js (6087 lines)"}, "properties": {"repobilityId": "5a86751519c2322d", "scanner": "scanner-primary", "fingerprint": "91d96b7936b240cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44e780fb83aa855a", "level": "note", "message": {"text": "Very large file: server/routes/admin-projects.js (3546 lines)"}, "properties": {"repobilityId": "237f767461735f57", "scanner": "scanner-primary", "fingerprint": "44e780fb83aa855a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-907e58d91ade6236", "level": "note", "message": {"text": "Very large file: server/routes/admin-timetracking.js (1252 lines)"}, "properties": {"repobilityId": "7427bd0ce588365b", "scanner": "scanner-primary", "fingerprint": "907e58d91ade6236", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-384b11e6d21f1358", "level": "note", "message": {"text": "Very large file: server/routes/admin-invoices.js (1454 lines)"}, "properties": {"repobilityId": "71a8522d893cbbd0", "scanner": "scanner-primary", "fingerprint": "384b11e6d21f1358", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-becd7da85ead94cb", "level": "note", "message": {"text": "Very large file: server/routes/admin-customers.js (2245 lines)"}, "properties": {"repobilityId": "4ec1b9f1d765d06b", "scanner": "scanner-primary", "fingerprint": "becd7da85ead94cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-177e5980b2e40764", "level": "note", "message": {"text": "Very large file: server/routes/property-lookup-v2.js (2937 lines)"}, "properties": {"repobilityId": "04807ea4fcf07541", "scanner": "scanner-primary", "fingerprint": "177e5980b2e40764", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8cb4f73ab7b2c2fe", "level": "note", "message": {"text": "Very large file: server/routes/admin-estimates.js (1479 lines)"}, "properties": {"repobilityId": "5be9e33335fc9a3d", "scanner": "scanner-primary", "fingerprint": "8cb4f73ab7b2c2fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e1bb426432f2426", "level": "note", "message": {"text": "Very large file: server/routes/admin-lawn-assessment.js (1481 lines)"}, "properties": {"repobilityId": "979e2c5406402ef1", "scanner": "scanner-primary", "fingerprint": "5e1bb426432f2426", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-056da0e40e7e0552", "level": "note", "message": {"text": "Very large file: server/routes/admin-agents.js (1563 lines)"}, "properties": {"repobilityId": "8042aa17e94d4957", "scanner": "scanner-primary", "fingerprint": "056da0e40e7e0552", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-316096d73f3db356", "level": "note", "message": {"text": "Very large file: server/routes/admin-communications.js (1658 lines)"}, "properties": {"repobilityId": "41b0ab7928035c4a", "scanner": "scanner-primary", "fingerprint": "316096d73f3db356", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-942f835265dd935a", "level": "note", "message": {"text": "Very large file: server/routes/admin-tax.js (1349 lines)"}, "properties": {"repobilityId": "dbde5b8be5587d68", "scanner": "scanner-primary", "fingerprint": "942f835265dd935a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d9f876bcb026241d", "level": "note", "message": {"text": "Very large file: server/routes/stripe-webhook.js (2099 lines)"}, "properties": {"repobilityId": "9cfe4411fd6d0bed", "scanner": "scanner-primary", "fingerprint": "d9f876bcb026241d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17adb2b91b83876c", "level": "note", "message": {"text": "Very large file: server/routes/admin-schedule.js (5055 lines)"}, "properties": {"repobilityId": "cf661b56cb097541", "scanner": "scanner-primary", "fingerprint": "17adb2b91b83876c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba16c0dc9a43b59a", "level": "note", "message": {"text": "Very large file: server/routes/admin-intelligence-bar.js (1399 lines)"}, "properties": {"repobilityId": "b7c986b3a1bc04a5", "scanner": "scanner-primary", "fingerprint": "ba16c0dc9a43b59a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b85a379eddcacce", "level": "note", "message": {"text": "Very large file: server/routes/admin-newsletter.js (2131 lines)"}, "properties": {"repobilityId": "7aeb30a9a5ad28e4", "scanner": "scanner-primary", "fingerprint": "9b85a379eddcacce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85de43f360e810d8", "level": "note", "message": {"text": "Very large file: server/routes/admin-inventory.js (3351 lines)"}, "properties": {"repobilityId": "e589f60790e54979", "scanner": "scanner-primary", "fingerprint": "85de43f360e810d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10e03595c5004d66", "level": "note", "message": {"text": "Very large file: server/routes/admin-protocols.js (2494 lines)"}, "properties": {"repobilityId": "cbecce18a1b7f8e4", "scanner": "scanner-primary", "fingerprint": "10e03595c5004d66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ed25fe1b04e54f9", "level": "note", "message": {"text": "Very large file: server/routes/estimate-public.js (10410 lines)"}, "properties": {"repobilityId": "932d180fc7e2f45f", "scanner": "scanner-primary", "fingerprint": "3ed25fe1b04e54f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46b17f4567cfac43", "level": "note", "message": {"text": "Very large file: server/services/estimate-converter.js (1449 lines)"}, "properties": {"repobilityId": "3bfbced46a49b966", "scanner": "scanner-primary", "fingerprint": "46b17f4567cfac43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0c9c372b85cdc970", "level": "note", "message": {"text": "Very large file: server/services/newsletter-draft.js (1402 lines)"}, "properties": {"repobilityId": "13c0e47c1ecd7096", "scanner": "scanner-primary", "fingerprint": "0c9c372b85cdc970", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a25bdc7df22199fa", "level": "note", "message": {"text": "Very large file: server/services/scheduler.js (2710 lines)"}, "properties": {"repobilityId": "5034d0a6d2d75dc6", "scanner": "scanner-primary", "fingerprint": "a25bdc7df22199fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4540e332a1efce33", "level": "note", "message": {"text": "Very large file: server/services/estimate-slot-availability.js (1310 lines)"}, "properties": {"repobilityId": "5f5cbada297c7367", "scanner": "scanner-primary", "fingerprint": "4540e332a1efce33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90de75c58a39088e", "level": "note", "message": {"text": "Very large file: server/services/project-types.js (940 lines)"}, "properties": {"repobilityId": "c0a9c78c2843035b", "scanner": "scanner-primary", "fingerprint": "90de75c58a39088e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c655c6e91224cf95", "level": "note", "message": {"text": "Very large file: server/services/invoice.js (2512 lines)"}, "properties": {"repobilityId": "8d8ef443c69df590", "scanner": "scanner-primary", "fingerprint": "c655c6e91224cf95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e83511e447ba8b41", "level": "note", "message": {"text": "Very large file: server/services/social-content-studio.js (1619 lines)"}, "properties": {"repobilityId": "c6d288b490e36fd2", "scanner": "scanner-primary", "fingerprint": "e83511e447ba8b41", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6a17ff43d178c22c", "level": "note", "message": {"text": "Very large file: server/services/social-media.js (1435 lines)"}, "properties": {"repobilityId": "2180ee430d8f4dac", "scanner": "scanner-primary", "fingerprint": "6a17ff43d178c22c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50dc171b40a559a9", "level": "note", "message": {"text": "Very large file: server/services/call-recording-processor.js (2877 lines)"}, "properties": {"repobilityId": "2a975edd69a8c758", "scanner": "scanner-primary", "fingerprint": "50dc171b40a559a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2807e6730d232e78", "level": "note", "message": {"text": "Very large file: server/services/waveguard-plan-engine.js (1636 lines)"}, "properties": {"repobilityId": "cf3684d98a7fc8ff", "scanner": "scanner-primary", "fingerprint": "2807e6730d232e78", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b52a5d0c646abf06", "level": "note", "message": {"text": "Very large file: server/services/stripe.js (2233 lines)"}, "properties": {"repobilityId": "5fdb6b069efb4ae3", "scanner": "scanner-primary", "fingerprint": "b52a5d0c646abf06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e2cb88d946ca424", "level": "note", "message": {"text": "Very large file: server/services/content-astro/astro-publisher.js (2283 lines)"}, "properties": {"repobilityId": "bcee2ddb6de82407", "scanner": "scanner-primary", "fingerprint": "6e2cb88d946ca424", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a58bf1af6a8359c5", "level": "note", "message": {"text": "Very large file: server/services/pricing-engine/service-pricing.js (6644 lines)"}, "properties": {"repobilityId": "24fcd788d2b14e79", "scanner": "scanner-primary", "fingerprint": "a58bf1af6a8359c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ada5660ad4bc60a", "level": "note", "message": {"text": "Very large file: server/services/pricing-engine/estimate-engine.js (1501 lines)"}, "properties": {"repobilityId": "89c4557dc8689fbc", "scanner": "scanner-primary", "fingerprint": "5ada5660ad4bc60a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c4a380976d42788f", "level": "note", "message": {"text": "Very large file: server/services/pricing-engine/db-bridge.js (1515 lines)"}, "properties": {"repobilityId": "dc38250d6009cad1", "scanner": "scanner-primary", "fingerprint": "c4a380976d42788f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ff0cd3c40df065e", "level": "note", "message": {"text": "Very large file: server/services/pricing-engine/constants.js (1678 lines)"}, "properties": {"repobilityId": "0f6e702ced84dc1a", "scanner": "scanner-primary", "fingerprint": "8ff0cd3c40df065e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-52c2ad77293a1588", "level": "note", "message": {"text": "Very large file: server/services/service-report/activity-indicators.js (2254 lines)"}, "properties": {"repobilityId": "79abe69bc5cbd8ac", "scanner": "scanner-primary", "fingerprint": "52c2ad77293a1588", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-340c635e0ad092bd", "level": "note", "message": {"text": "Very large file: server/services/service-report/report-data.js (2364 lines)"}, "properties": {"repobilityId": "8d7d25ed59e71ade", "scanner": "scanner-primary", "fingerprint": "340c635e0ad092bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54be6037df1a7412", "level": "note", "message": {"text": "Very large file: server/services/property-lookup/ai-property-lookup.js (3105 lines)"}, "properties": {"repobilityId": "58f4582474203838", "scanner": "scanner-primary", "fingerprint": "54be6037df1a7412", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37d6da9f2bcb9c8f", "level": "note", "message": {"text": "Very large file: server/services/intelligence-bar/seo-tools.js (1543 lines)"}, "properties": {"repobilityId": "82631e24caa0fc4d", "scanner": "scanner-primary", "fingerprint": "37d6da9f2bcb9c8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b21e15d9acea524d", "level": "note", "message": {"text": "Very large file: server/services/content/autonomous-runner.js (2565 lines)"}, "properties": {"repobilityId": "d22183b0c65aae9c", "scanner": "scanner-primary", "fingerprint": "b21e15d9acea524d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1f6208a72485d52", "level": "note", "message": {"text": "Very large file: server/services/content/internal-link-pr-executor.js (1306 lines)"}, "properties": {"repobilityId": "ea2fec84457cdf42", "scanner": "scanner-primary", "fingerprint": "b1f6208a72485d52", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-14fc80c743fd872a", "level": "note", "message": {"text": "Very large file: server/services/seo/gsc-opportunity-miner.js (1242 lines)"}, "properties": {"repobilityId": "ad18b2313d41a999", "scanner": "scanner-primary", "fingerprint": "14fc80c743fd872a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "539be1aa96077b55", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-1a6aeb84f8544549", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: client/package.json"}, "properties": {"repobilityId": "289cda4e29a77d84", "scanner": "scanner-primary", "fingerprint": "1a6aeb84f8544549", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7101ca1926e3342", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: server/package.json"}, "properties": {"repobilityId": "bbcd0a89809ced91", "scanner": "scanner-primary", "fingerprint": "d7101ca1926e3342", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "0353e6ab964a781e", "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": "37d2e4f086cfa323", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "8ae689d5e0272315", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "61e2f7e8ad077679", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "a9a5c34630aaa690", "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": "bbf4c7aaba48134a", "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": "4e746f9ef4f3d497", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-c063be2d5862df3d", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CODEX.md"}, "properties": {"repobilityId": "e563ad7ce2dbe26d", "scanner": "scanner-primary", "fingerprint": "c063be2d5862df3d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "codex_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CODEX.md"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cbb5857940ba0dc2", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: AGENTS.md"}, "properties": {"repobilityId": "e12c7213d5eadf3e", "scanner": "scanner-primary", "fingerprint": "cbb5857940ba0dc2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-994e17ccd192d33f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/vendor-codes.md"}, "properties": {"repobilityId": "688fa4ebb488dff8", "scanner": "scanner-primary", "fingerprint": "994e17ccd192d33f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/vendor-codes.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b354082ae4e9594c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/local-seo-audit.md"}, "properties": {"repobilityId": "808bc71c012dea3f", "scanner": "scanner-primary", "fingerprint": "b354082ae4e9594c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/local-seo-audit.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b80330623ba78416", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/public/sw.js:132"}, "properties": {"repobilityId": "44c6bda36d131fe7", "scanner": "scanner-primary", "fingerprint": "b80330623ba78416", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18e741160bc357be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/sw.js:87"}, "properties": {"repobilityId": "9b3cf3f82858a2fa", "scanner": "scanner-primary", "fingerprint": "18e741160bc357be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-612f6673902637c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/public/push-subscribe.js:29"}, "properties": {"repobilityId": "ff2d67620a6f426d", "scanner": "scanner-primary", "fingerprint": "612f6673902637c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9c4b2523c0a5e68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/public/push-subscribe.js:114"}, "properties": {"repobilityId": "d2d45677188a145c", "scanner": "scanner-primary", "fingerprint": "d9c4b2523c0a5e68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fbc89e82ea8a694b", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/theme-brand.js:74"}, "properties": {"repobilityId": "a4936ae934689a6e", "scanner": "scanner-primary", "fingerprint": "fbc89e82ea8a694b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1262bead7ec6a07", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/utils/admin-fetch.js:3"}, "properties": {"repobilityId": "1a6824d0be363e4b", "scanner": "scanner-primary", "fingerprint": "c1262bead7ec6a07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-743276f023714a21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/admin-fetch.js:49"}, "properties": {"repobilityId": "9005673c99f75eb5", "scanner": "scanner-primary", "fingerprint": "743276f023714a21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a753c92983909f14", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/utils/api.js:62"}, "properties": {"repobilityId": "ad1952afd580f1fd", "scanner": "scanner-primary", "fingerprint": "a753c92983909f14", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f2fe4376f87a4ca7", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/PestPressureCard.jsx:155"}, "properties": {"repobilityId": "f92f1167b1d5ee2f", "scanner": "scanner-primary", "fingerprint": "f2fe4376f87a4ca7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3605a7fc626292fa", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/NewsletterSignup.jsx:15"}, "properties": {"repobilityId": "309e6355ee541dcb", "scanner": "scanner-primary", "fingerprint": "3605a7fc626292fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f77827fb4d89890a", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/Button.jsx:4"}, "properties": {"repobilityId": "1f316836af56d26b", "scanner": "scanner-primary", "fingerprint": "f77827fb4d89890a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4300ea7703d2be6", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/NotificationBell.jsx:55"}, "properties": {"repobilityId": "5000bf760a8bf163", "scanner": "scanner-primary", "fingerprint": "b4300ea7703d2be6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b8e5ae3b190d574", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileCardOnFileSheet.jsx:1"}, "properties": {"repobilityId": "07fc6052070c40ab", "scanner": "scanner-primary", "fingerprint": "7b8e5ae3b190d574", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b935e1742ca9555d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/CalendarViewsV2.jsx:55"}, "properties": {"repobilityId": "c2dc107bc9492781", "scanner": "scanner-primary", "fingerprint": "b935e1742ca9555d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe8cff0dc6d91510", "level": "none", "message": {"text": "Commented-code block (15 lines) in client/src/components/schedule/MobileCheckoutSheet.jsx:11"}, "properties": {"repobilityId": "588d261448db20fa", "scanner": "scanner-primary", "fingerprint": "fe8cff0dc6d91510", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5194c1cc1fe5739", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/schedule/CreateAppointmentModal.jsx:8"}, "properties": {"repobilityId": "08f082ed6a730dfa", "scanner": "scanner-primary", "fingerprint": "f5194c1cc1fe5739", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6366f924418435a", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/schedule/MobileCustomerDetailSheet.jsx:8"}, "properties": {"repobilityId": "e58ce734a0252955", "scanner": "scanner-primary", "fingerprint": "a6366f924418435a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58820818dd547de3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileServicePickerSheet.jsx:14"}, "properties": {"repobilityId": "49e013c35f40ed9e", "scanner": "scanner-primary", "fingerprint": "58820818dd547de3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-940e474eccd42ede", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileManualCardSheet.jsx:6"}, "properties": {"repobilityId": "9808a198ddec3ef6", "scanner": "scanner-primary", "fingerprint": "940e474eccd42ede", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b0f0153e243b9cf", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileAppointmentDetailSheet.jsx:1"}, "properties": {"repobilityId": "37167a51b4e3f851", "scanner": "scanner-primary", "fingerprint": "3b0f0153e243b9cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45218296ff6e80dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileAppointmentDetailSheet.jsx:25"}, "properties": {"repobilityId": "4fa34d7e55327d2c", "scanner": "scanner-primary", "fingerprint": "45218296ff6e80dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2fef68399a7ca04", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/schedule/MobilePaymentSheet.jsx:4"}, "properties": {"repobilityId": "87b8a15303cb9639", "scanner": "scanner-primary", "fingerprint": "e2fef68399a7ca04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d50ccff1148fa385", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDay.jsx:603"}, "properties": {"repobilityId": "0d685ea3b7d2b2b1", "scanner": "scanner-primary", "fingerprint": "d50ccff1148fa385", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0bce8336661d518", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/ScheduleListView.jsx:8"}, "properties": {"repobilityId": "c58ab7ea9e4e2eb5", "scanner": "scanner-primary", "fingerprint": "b0bce8336661d518", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-147f40196cc7d9a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileCheckTenderSheet.jsx:1"}, "properties": {"repobilityId": "a358938278d03e69", "scanner": "scanner-primary", "fingerprint": "147f40196cc7d9a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52ec0f9698699072", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileDispatchList.jsx:3"}, "properties": {"repobilityId": "3e644098cbc057d8", "scanner": "scanner-primary", "fingerprint": "52ec0f9698699072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2d132da55f26362", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/schedule/RecurringAlertsBannerV2.jsx:1"}, "properties": {"repobilityId": "a1bcb78b15c79116", "scanner": "scanner-primary", "fingerprint": "f2d132da55f26362", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dedb0600c22521e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/RecurringAlertsBannerV2.jsx:14"}, "properties": {"repobilityId": "a80772d1dd877f92", "scanner": "scanner-primary", "fingerprint": "dedb0600c22521e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d2ea4ebc64177c87", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:1"}, "properties": {"repobilityId": "9eaabe8e21c22a86", "scanner": "scanner-primary", "fingerprint": "d2ea4ebc64177c87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-853868b4986fa29f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/schedule/MobileItemDiscountPickerSheet.jsx:18"}, "properties": {"repobilityId": "7d3fccc44b6c56a6", "scanner": "scanner-primary", "fingerprint": "853868b4986fa29f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aed87f587169fce0", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/schedule/MobileCashTenderSheet.jsx:1"}, "properties": {"repobilityId": "620edbf044b2adcd", "scanner": "scanner-primary", "fingerprint": "aed87f587169fce0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3d174b0b7426be5", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/schedule/TimeGridDays.jsx:667"}, "properties": {"repobilityId": "a3889d4fcc5525ad", "scanner": "scanner-primary", "fingerprint": "e3d174b0b7426be5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d5c91f7a121f951", "level": "note", "message": {"text": "Legacy-named symbol `waves_dispatch_zoom_v2` in client/src/components/schedule/MobileWeekGrid.jsx:34"}, "properties": {"repobilityId": "22afd52ba26c6bee", "scanner": "scanner-primary", "fingerprint": "8d5c91f7a121f951", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b08108c00dbebc51", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/brand/WavesShell.jsx:11"}, "properties": {"repobilityId": "2a4190351c5ee716", "scanner": "scanner-primary", "fingerprint": "b08108c00dbebc51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12c32f490b323c46", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/dispatch/InsightsPanelV2.jsx:1"}, "properties": {"repobilityId": "885ed882b92f0ab0", "scanner": "scanner-primary", "fingerprint": "12c32f490b323c46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6a827a59e8e8c9c", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/components/dispatch/RevenuePanelV2.jsx:1"}, "properties": {"repobilityId": "f89631fe69f7e90c", "scanner": "scanner-primary", "fingerprint": "e6a827a59e8e8c9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8149c5e45c5f15f", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/dispatch/DispatchBoardLayout.jsx:36"}, "properties": {"repobilityId": "7c7ee549e01095d5", "scanner": "scanner-primary", "fingerprint": "c8149c5e45c5f15f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-122da9e888b18f2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/dispatch/JobDrawer.jsx:96"}, "properties": {"repobilityId": "136e71f32e784378", "scanner": "scanner-primary", "fingerprint": "122da9e888b18f2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eef7a7bb42a30d5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/dispatch/DispatchMap.jsx:95"}, "properties": {"repobilityId": "b5dface6bde7b3dc", "scanner": "scanner-primary", "fingerprint": "eef7a7bb42a30d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6146c3d8c82860c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/dashboard/charts.jsx:3"}, "properties": {"repobilityId": "c7d6e491821d63cb", "scanner": "scanner-primary", "fingerprint": "6146c3d8c82860c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ccf9cc4b105fb86", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/tech/CreateProjectModal.jsx:152"}, "properties": {"repobilityId": "42cc49277b9999a7", "scanner": "scanner-primary", "fingerprint": "0ccf9cc4b105fb86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eabea1ce4ee11969", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/GeofenceArrivalPrompt.jsx:51"}, "properties": {"repobilityId": "2195b852e8aea342", "scanner": "scanner-primary", "fingerprint": "eabea1ce4ee11969", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15d774f0807312ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/tech/TechServicePhotosModal.jsx:16"}, "properties": {"repobilityId": "b36413ae8153fb13", "scanner": "scanner-primary", "fingerprint": "15d774f0807312ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e505508e73a8738e", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/tech/WdoIntelligenceBar.jsx:76"}, "properties": {"repobilityId": "74394581588a33ad", "scanner": "scanner-primary", "fingerprint": "e505508e73a8738e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e9cd88e8498f5b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/tech/TechIntelligenceBar.jsx:18"}, "properties": {"repobilityId": "4af42fa08c64d37f", "scanner": "scanner-primary", "fingerprint": "1e9cd88e8498f5b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-93cc66dcea866be5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/equipment/MileageTab.jsx:8"}, "properties": {"repobilityId": "d0b95cf34fba0458", "scanner": "scanner-primary", "fingerprint": "93cc66dcea866be5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9899629f988d13f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/billing/AutopayCard.jsx:3"}, "properties": {"repobilityId": "d1b3cbef7fad7f8b", "scanner": "scanner-primary", "fingerprint": "9899629f988d13f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf2fbb8c28f57ef3", "level": "note", "message": {"text": "Legacy-named symbol `revokeOld` in client/src/components/admin/ServiceOutlineComposerModal.jsx:279"}, "properties": {"repobilityId": "f97bdd3db5718d17", "scanner": "scanner-primary", "fingerprint": "bf2fbb8c28f57ef3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0343d96a583574e", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/MobileSettingsPage.jsx:4"}, "properties": {"repobilityId": "60b4cfc4e7f75eff", "scanner": "scanner-primary", "fingerprint": "c0343d96a583574e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ee1cf571bbe4ae3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PricingLogicPanel.jsx:22"}, "properties": {"repobilityId": "a166b9f6178a9dbf", "scanner": "scanner-primary", "fingerprint": "5ee1cf571bbe4ae3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-60b46f413ee483a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntegrationHealthSection.jsx:21"}, "properties": {"repobilityId": "9001bb23ed1f1681", "scanner": "scanner-primary", "fingerprint": "60b46f413ee483a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7142f44600cd4168", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/IntelligenceBar.jsx:21"}, "properties": {"repobilityId": "60100d047712ee61", "scanner": "scanner-primary", "fingerprint": "7142f44600cd4168", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2fdc9463f2fcd6c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettings.jsx:25"}, "properties": {"repobilityId": "ab42a1a0eb3f2656", "scanner": "scanner-primary", "fingerprint": "2fdc9463f2fcd6c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e98ac9eca63e5ae4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/ProcurementIntelligenceBar.jsx:32"}, "properties": {"repobilityId": "97aa13dd1fb9acd9", "scanner": "scanner-primary", "fingerprint": "e98ac9eca63e5ae4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07aaee501a7dcb73", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/DashboardIntelligenceBar.jsx:33"}, "properties": {"repobilityId": "56d4bd072b1d826e", "scanner": "scanner-primary", "fingerprint": "07aaee501a7dcb73", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ada41db56139330", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/admin/CallBridgeLink.jsx:1"}, "properties": {"repobilityId": "fdcb496e4424916e", "scanner": "scanner-primary", "fingerprint": "9ada41db56139330", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9b4153df203536d", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/PushSettingsV2.jsx:1"}, "properties": {"repobilityId": "2f114ba2f6aa5637", "scanner": "scanner-primary", "fingerprint": "b9b4153df203536d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9683b1ebc522bff9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/PushSettingsV2.jsx:40"}, "properties": {"repobilityId": "02657ae5d3e456f0", "scanner": "scanner-primary", "fingerprint": "9683b1ebc522bff9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aef6643e8bfbc9ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/GlobalCommandPalette.jsx:46"}, "properties": {"repobilityId": "80a2193ee311ff73", "scanner": "scanner-primary", "fingerprint": "aef6643e8bfbc9ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d9d239a270d8350", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/SEOIntelligenceBar.jsx:29"}, "properties": {"repobilityId": "9064439d10364e06", "scanner": "scanner-primary", "fingerprint": "9d9d239a270d8350", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-243677fed62a4d86", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/components/admin/NotificationBell.jsx:59"}, "properties": {"repobilityId": "dd09dca39f838e58", "scanner": "scanner-primary", "fingerprint": "243677fed62a4d86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9743f46f1fe45c16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/NotificationBell.jsx:30"}, "properties": {"repobilityId": "aa963741f8bcb66d", "scanner": "scanner-primary", "fingerprint": "9743f46f1fe45c16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b704a9d13e59fa2", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/admin/MobileNewCustomerSheet.jsx:1"}, "properties": {"repobilityId": "67dd8c9dde39f3f3", "scanner": "scanner-primary", "fingerprint": "7b704a9d13e59fa2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cbb7310cf6d341b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/RevenueIntelligenceBar.jsx:30"}, "properties": {"repobilityId": "fd43d2446c89027e", "scanner": "scanner-primary", "fingerprint": "7cbb7310cf6d341b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-19f55338016d759d", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/components/admin/EstimateModalsV2.jsx:1"}, "properties": {"repobilityId": "d7314ffd3c6341b6", "scanner": "scanner-primary", "fingerprint": "19f55338016d759d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01597f5cdfa7a12f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/EstimateModalsV2.jsx:29"}, "properties": {"repobilityId": "fb6be542f5cc8a8f", "scanner": "scanner-primary", "fingerprint": "01597f5cdfa7a12f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a9b737df3d2e73d", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in client/src/components/admin/MobileServiceLibrary.jsx:975"}, "properties": {"repobilityId": "81d4d9d5e413d336", "scanner": "scanner-primary", "fingerprint": "6a9b737df3d2e73d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2b33319125e46c45", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/components/admin/MobileServiceLibrary.jsx:1"}, "properties": {"repobilityId": "f74c12315ffc2313", "scanner": "scanner-primary", "fingerprint": "2b33319125e46c45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57338dd09ccfc2d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/admin/MobileServiceLibrary.jsx:15"}, "properties": {"repobilityId": "e89ebe94ef5fb94d", "scanner": "scanner-primary", "fingerprint": "57338dd09ccfc2d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f9ef651fa9ead421", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/components/portal/ReferralTab.jsx:6"}, "properties": {"repobilityId": "a43c185719055e6c", "scanner": "scanner-primary", "fingerprint": "f9ef651fa9ead421", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffb436ae63bd3df1", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/lib/estimateEngine.js:1711"}, "properties": {"repobilityId": "035a8740f1633284", "scanner": "scanner-primary", "fingerprint": "ffb436ae63bd3df1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3a06071f7c74f7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/lib/wdoReportFields.js:1"}, "properties": {"repobilityId": "dcd4beb1fa5ee3d0", "scanner": "scanner-primary", "fingerprint": "d3a06071f7c74f7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-290c6354a9dece74", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/lib/push-subscribe.js:29"}, "properties": {"repobilityId": "03fd51c7258f17f9", "scanner": "scanner-primary", "fingerprint": "290c6354a9dece74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d304867f6de39f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/push-subscribe.js:120"}, "properties": {"repobilityId": "ea786ce06526ea50", "scanner": "scanner-primary", "fingerprint": "6d304867f6de39f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cabfdd76f0bc620", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/lib/adminFetch.js:27"}, "properties": {"repobilityId": "55121a64ef0bbab6", "scanner": "scanner-primary", "fingerprint": "5cabfdd76f0bc620", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0783e4342b61d088", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/lib/tapToPayReturn.js:3"}, "properties": {"repobilityId": "01958d74ce9e46f9", "scanner": "scanner-primary", "fingerprint": "0783e4342b61d088", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32106b8f63f0f81b", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in client/src/pages/ReportViewPage.jsx:330"}, "properties": {"repobilityId": "61290d389fce4e8c", "scanner": "scanner-primary", "fingerprint": "32106b8f63f0f81b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-48bdf3fb098aedd7", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/ReportViewPage.jsx:1012"}, "properties": {"repobilityId": "0fc628485d196f81", "scanner": "scanner-primary", "fingerprint": "48bdf3fb098aedd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6df3349ba76887d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/ReportViewPage.jsx:7670"}, "properties": {"repobilityId": "9f168b27e8a8cba1", "scanner": "scanner-primary", "fingerprint": "6df3349ba76887d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ec545341e4f742fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/PublicBookingPage.jsx:99"}, "properties": {"repobilityId": "2e62141c2ebd9460", "scanner": "scanner-primary", "fingerprint": "ec545341e4f742fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-919f792ff6eb0e0a", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/PortalPage.jsx:2826"}, "properties": {"repobilityId": "4d3d311f7dce0af7", "scanner": "scanner-primary", "fingerprint": "919f792ff6eb0e0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30e2bb8b67193a76", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/BookingPage.jsx:12"}, "properties": {"repobilityId": "fa7fc57e4796e2f6", "scanner": "scanner-primary", "fingerprint": "30e2bb8b67193a76", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e98a94943e10e77d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/RatePage.jsx:221"}, "properties": {"repobilityId": "c51bc3ffa93c64e6", "scanner": "scanner-primary", "fingerprint": "e98a94943e10e77d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f017ae7526f53fe1", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/AdminLoginPage.jsx:31"}, "properties": {"repobilityId": "cd1108580e88cd5e", "scanner": "scanner-primary", "fingerprint": "f017ae7526f53fe1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0163cf32b291cbe4", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/TrackPage.jsx:18"}, "properties": {"repobilityId": "76a500e09cbd3184", "scanner": "scanner-primary", "fingerprint": "0163cf32b291cbe4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d13d9a4558c4e618", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/QuotePage.jsx:325"}, "properties": {"repobilityId": "6d9bbb919ec5c54b", "scanner": "scanner-primary", "fingerprint": "d13d9a4558c4e618", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-082e0487b0e68674", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/QuotePage.jsx:493"}, "properties": {"repobilityId": "911fde60b08052f1", "scanner": "scanner-primary", "fingerprint": "082e0487b0e68674", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b56e9cb4c32bdaa6", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/EstimateViewPage.jsx:643"}, "properties": {"repobilityId": "d35e5ad6a245a59a", "scanner": "scanner-primary", "fingerprint": "b56e9cb4c32bdaa6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55fc24e639d6f9c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/EstimateViewPage.jsx:1982"}, "properties": {"repobilityId": "dc33f1b534dc574f", "scanner": "scanner-primary", "fingerprint": "55fc24e639d6f9c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dcd957c11e1c28d", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/NewsletterArchivePage.jsx:6"}, "properties": {"repobilityId": "9c85a74f0841c139", "scanner": "scanner-primary", "fingerprint": "7dcd957c11e1c28d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff3d6e89daf5fe36", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/PayPageV2.jsx:8"}, "properties": {"repobilityId": "0e81290bfad14ae9", "scanner": "scanner-primary", "fingerprint": "ff3d6e89daf5fe36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6aabcaa71b49a10", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/ReceiptPage.jsx:3"}, "properties": {"repobilityId": "c6e3f5c94b8c0e7c", "scanner": "scanner-primary", "fingerprint": "e6aabcaa71b49a10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b0f2fb55a15e582", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/NewsletterLandingPage.jsx:5"}, "properties": {"repobilityId": "e542b6c00b56ca07", "scanner": "scanner-primary", "fingerprint": "1b0f2fb55a15e582", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ec1dc4414e8e705", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/TrackPreviewPage.jsx:1"}, "properties": {"repobilityId": "361cb07ee5c45a15", "scanner": "scanner-primary", "fingerprint": "0ec1dc4414e8e705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51667a540439afa5", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/tech/TechEstimatorPage.jsx:40"}, "properties": {"repobilityId": "da40d2311a6bfbb0", "scanner": "scanner-primary", "fingerprint": "51667a540439afa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c2afedc630199d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/tech/TechHomePage.jsx:3"}, "properties": {"repobilityId": "f8058835d111244b", "scanner": "scanner-primary", "fingerprint": "1c2afedc630199d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e226af6e62c22d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/tech/TechHomePage.jsx:729"}, "properties": {"repobilityId": "f093828c36a33c56", "scanner": "scanner-primary", "fingerprint": "2e226af6e62c22d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-718eb72a83a72ab8", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/tech/TechProtocolsPage.jsx:19"}, "properties": {"repobilityId": "09fb8bb7257ddc35", "scanner": "scanner-primary", "fingerprint": "718eb72a83a72ab8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80daf21c98ff976d", "level": "none", "message": {"text": "Commented-code block (17 lines) in client/src/pages/admin/EmailAutomationsPanelV2.jsx:15"}, "properties": {"repobilityId": "74a6bb6a04e66aff", "scanner": "scanner-primary", "fingerprint": "80daf21c98ff976d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10ae2efdf1b9c379", "level": "note", "message": {"text": "Legacy-named symbol `credentials_v1` in client/src/pages/admin/CredentialsPage.jsx:4"}, "properties": {"repobilityId": "23960f92014fa3a6", "scanner": "scanner-primary", "fingerprint": "10ae2efdf1b9c379", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0fc4855a17c950ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BlogPage.jsx:51"}, "properties": {"repobilityId": "509b837637c5d7b3", "scanner": "scanner-primary", "fingerprint": "0fc4855a17c950ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb9e3a3edfa8beec", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/pages/admin/EquipmentCalibrationPanel.jsx:125"}, "properties": {"repobilityId": "b27095e2198fffad", "scanner": "scanner-primary", "fingerprint": "bb9e3a3edfa8beec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e06467ea8e582f05", "level": "none", "message": {"text": "Commented-code block (10 lines) in client/src/pages/admin/CustomersPageV2.jsx:1"}, "properties": {"repobilityId": "e51464394879361f", "scanner": "scanner-primary", "fingerprint": "e06467ea8e582f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff9e89c918628659", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/DispatchBoardPage.jsx:80"}, "properties": {"repobilityId": "d63bbf1443562bb5", "scanner": "scanner-primary", "fingerprint": "ff9e89c918628659", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b62e8a46fef19af3", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in client/src/pages/admin/EmailTemplatesPanelV2.jsx:252"}, "properties": {"repobilityId": "e08d92e480f65d9d", "scanner": "scanner-primary", "fingerprint": "b62e8a46fef19af3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d33fc817b397ba5c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatePage.jsx:1789"}, "properties": {"repobilityId": "8c1198d9464ba116", "scanner": "scanner-primary", "fingerprint": "d33fc817b397ba5c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c42282c102769d8f", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in client/src/pages/admin/ServiceLibraryPage.jsx:104"}, "properties": {"repobilityId": "b397073ddb6820b9", "scanner": "scanner-primary", "fingerprint": "c42282c102769d8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7c85425b9ae1c98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingStrategyPage.jsx:25"}, "properties": {"repobilityId": "a3b1d549e8ef019d", "scanner": "scanner-primary", "fingerprint": "c7c85425b9ae1c98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-306888e1a25166e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgePage.jsx:33"}, "properties": {"repobilityId": "a39d645a4124cd76", "scanner": "scanner-primary", "fingerprint": "306888e1a25166e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-472e71f14e7c5147", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/EstimateToolViewV2.jsx:1"}, "properties": {"repobilityId": "01929ec738875fac", "scanner": "scanner-primary", "fingerprint": "472e71f14e7c5147", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1454cd8c3dc7e0f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimateToolViewV2.jsx:307"}, "properties": {"repobilityId": "2576a4b62255f6ca", "scanner": "scanner-primary", "fingerprint": "1454cd8c3dc7e0f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-46823376cc65e469", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in client/src/pages/admin/LawnAssessmentPanel.jsx:173"}, "properties": {"repobilityId": "2d922be02d8fbfd8", "scanner": "scanner-primary", "fingerprint": "46823376cc65e469", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c4a59c585e8006b", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/LawnAssessmentPanel.jsx:356"}, "properties": {"repobilityId": "16ebf9bb5cc16b0c", "scanner": "scanner-primary", "fingerprint": "4c4a59c585e8006b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1dcc410de6628d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LawnAssessmentPanel.jsx:26"}, "properties": {"repobilityId": "7185cfcdc14357a8", "scanner": "scanner-primary", "fingerprint": "f1dcc410de6628d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98f83ffdc1255411", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TaxPage.jsx:43"}, "properties": {"repobilityId": "23881eb1899613a6", "scanner": "scanner-primary", "fingerprint": "98f83ffdc1255411", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6f8889a270e0ccb", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/admin/CustomerHealthTabs.jsx:24"}, "properties": {"repobilityId": "9757c310bc2060b9", "scanner": "scanner-primary", "fingerprint": "d6f8889a270e0ccb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9152856c5eeaa12f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthTabs.jsx:6"}, "properties": {"repobilityId": "ce4dfcd71eedf79f", "scanner": "scanner-primary", "fingerprint": "9152856c5eeaa12f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c74767c1ad2e76b", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/admin/PipelineAnalytics.jsx:138"}, "properties": {"repobilityId": "5d98a929f4460dec", "scanner": "scanner-primary", "fingerprint": "0c74767c1ad2e76b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfc6625931118b88", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/DiscountsTabs.jsx:24"}, "properties": {"repobilityId": "975ab3d8a925d06b", "scanner": "scanner-primary", "fingerprint": "dfc6625931118b88", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e8587dfe1ddefa1", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/AgentsHubPage.jsx:69"}, "properties": {"repobilityId": "f096fc9528379a53", "scanner": "scanner-primary", "fingerprint": "9e8587dfe1ddefa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05f55fe41bfe42a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/TimeTrackingPage.jsx:3140"}, "properties": {"repobilityId": "74cf5bb5bca59971", "scanner": "scanner-primary", "fingerprint": "05f55fe41bfe42a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d87aa91418151563", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TimeTrackingPage.jsx:39"}, "properties": {"repobilityId": "27068fc1d272863b", "scanner": "scanner-primary", "fingerprint": "d87aa91418151563", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06b72213a8efa564", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RequestsPage.jsx:36"}, "properties": {"repobilityId": "04122009d9243b0f", "scanner": "scanner-primary", "fingerprint": "06b72213a8efa564", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81e09d08bfb71bbc", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/CallRecordingsPanel.jsx:3"}, "properties": {"repobilityId": "cdd072074d020341", "scanner": "scanner-primary", "fingerprint": "81e09d08bfb71bbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de288f57d0fc07ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CallRecordingsPanel.jsx:66"}, "properties": {"repobilityId": "70410a2bb213a7d0", "scanner": "scanner-primary", "fingerprint": "de288f57d0fc07ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5cd6244f1e8e3237", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/CallLogTabV2.jsx:1"}, "properties": {"repobilityId": "15dc7be4e47318f2", "scanner": "scanner-primary", "fingerprint": "5cd6244f1e8e3237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40bbac1f8e686958", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/LeadsTabs.jsx:10"}, "properties": {"repobilityId": "e2f8234d9a262560", "scanner": "scanner-primary", "fingerprint": "40bbac1f8e686958", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4986979e70666ac1", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/pages/admin/CommunicationsPage.jsx:3"}, "properties": {"repobilityId": "fd7b9b92442ff038", "scanner": "scanner-primary", "fingerprint": "4986979e70666ac1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23c35aca51eb509f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CommunicationsPage.jsx:58"}, "properties": {"repobilityId": "ba41ddc0e54433c1", "scanner": "scanner-primary", "fingerprint": "23c35aca51eb509f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24cfc384fc62fff6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/GBPManagement.jsx:24"}, "properties": {"repobilityId": "d2eaa83fe0b027b9", "scanner": "scanner-primary", "fingerprint": "24cfc384fc62fff6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9492ae3eb621546f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/_DesignSystemFlagsPage.jsx:38"}, "properties": {"repobilityId": "84d89b2dc81b9913", "scanner": "scanner-primary", "fingerprint": "9492ae3eb621546f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7616b0e044c75d63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/_DesignSystemFlagsPage.jsx:24"}, "properties": {"repobilityId": "b5ee390c8e5249c9", "scanner": "scanner-primary", "fingerprint": "7616b0e044c75d63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e84f2914a133e9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/BankingPage.jsx:67"}, "properties": {"repobilityId": "411ebd220f5909b4", "scanner": "scanner-primary", "fingerprint": "2e84f2914a133e9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd6bd78b07e70664", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/admin/ReviewsPage.jsx:3095"}, "properties": {"repobilityId": "c7fe06b279bc3083", "scanner": "scanner-primary", "fingerprint": "fd6bd78b07e70664", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67a0f5a51f90c146", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewsPage.jsx:1854"}, "properties": {"repobilityId": "c9f88efdd295a2b8", "scanner": "scanner-primary", "fingerprint": "67a0f5a51f90c146", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a4a13a659668eaf1", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsTabsV2.jsx:5"}, "properties": {"repobilityId": "c33fb76cb84ff908", "scanner": "scanner-primary", "fingerprint": "a4a13a659668eaf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7142b0222300d91", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/NewsletterTabs.jsx:3"}, "properties": {"repobilityId": "14c384a0862f295b", "scanner": "scanner-primary", "fingerprint": "f7142b0222300d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24dad68d555e8f1b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/NewsletterTabs.jsx:2034"}, "properties": {"repobilityId": "009799a753e4ff99", "scanner": "scanner-primary", "fingerprint": "24dad68d555e8f1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0ebf668ec0cf34a7", "level": "none", "message": {"text": "Commented-code block (11 lines) in client/src/pages/admin/AdminInvoicesPage.jsx:8"}, "properties": {"repobilityId": "2f2495a91aae13fa", "scanner": "scanner-primary", "fingerprint": "0ebf668ec0cf34a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f64a0b1b512c2b55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CompliancePage.jsx:269"}, "properties": {"repobilityId": "87d413b9c141d175", "scanner": "scanner-primary", "fingerprint": "f64a0b1b512c2b55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-476ca683407b2708", "level": "none", "message": {"text": "Commented-code block (6 lines) in client/src/pages/admin/AdsPage.jsx:3121"}, "properties": {"repobilityId": "896c6ea049467ca9", "scanner": "scanner-primary", "fingerprint": "476ca683407b2708", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-395b3df5c467b15c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/AdsPage.jsx:45"}, "properties": {"repobilityId": "934d31e5e1bdf20c", "scanner": "scanner-primary", "fingerprint": "395b3df5c467b15c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba180bc0df8d2d14", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentMaintenancePage.jsx:30"}, "properties": {"repobilityId": "0a61c29a858e94e2", "scanner": "scanner-primary", "fingerprint": "ba180bc0df8d2d14", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-be450312c617ce7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/KnowledgeBasePage.jsx:28"}, "properties": {"repobilityId": "9a0c0e061ae3efba", "scanner": "scanner-primary", "fingerprint": "be450312c617ce7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87819d155d06f2d7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ContentCalendar.jsx:26"}, "properties": {"repobilityId": "58ab84d0b32af1fc", "scanner": "scanner-primary", "fingerprint": "87819d155d06f2d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9af8f83ec73c256e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ToolHealthPage.jsx:22"}, "properties": {"repobilityId": "e864a717b05e8ddf", "scanner": "scanner-primary", "fingerprint": "9af8f83ec73c256e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21e5548d968b0029", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/pages/admin/DispatchPageV2.jsx:3"}, "properties": {"repobilityId": "4287cee608b72e54", "scanner": "scanner-primary", "fingerprint": "21e5548d968b0029", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a70835377f18905", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PPCDashboardPage.jsx:6"}, "properties": {"repobilityId": "ce715deb7d13da1b", "scanner": "scanner-primary", "fingerprint": "6a70835377f18905", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-beab277b996996a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/PricingLogicPage.jsx:64"}, "properties": {"repobilityId": "56844ec1dee909b4", "scanner": "scanner-primary", "fingerprint": "beab277b996996a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ae633d68c41b7db", "level": "note", "message": {"text": "Legacy-named symbol `billing_copy` in client/src/pages/admin/ProjectsPage.jsx:1643"}, "properties": {"repobilityId": "c220f3ee127da6ba", "scanner": "scanner-primary", "fingerprint": "6ae633d68c41b7db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-37ba53ce45db8c22", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/admin/ReviewVelocityEngine.jsx:55"}, "properties": {"repobilityId": "3dadee3d858b3b07", "scanner": "scanner-primary", "fingerprint": "37ba53ce45db8c22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6345852cc8678568", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReviewVelocityEngine.jsx:7"}, "properties": {"repobilityId": "95df9759c3a87659", "scanner": "scanner-primary", "fingerprint": "6345852cc8678568", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5d372ab3f26db970", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/admin/CustomersPage.jsx:3"}, "properties": {"repobilityId": "cdb6f7d0423de633", "scanner": "scanner-primary", "fingerprint": "5d372ab3f26db970", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fcbaf6431bb56c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomersPage.jsx:56"}, "properties": {"repobilityId": "5954e7bacedcf302", "scanner": "scanner-primary", "fingerprint": "6fcbaf6431bb56c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12f4295feebd991c", "level": "none", "message": {"text": "Commented-code block (14 lines) in client/src/pages/admin/EstimatesPageV2.jsx:1"}, "properties": {"repobilityId": "b3503218b33d5671", "scanner": "scanner-primary", "fingerprint": "12f4295feebd991c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18b20edd0ffed9b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EstimatesPageV2.jsx:158"}, "properties": {"repobilityId": "505c764652cdda55", "scanner": "scanner-primary", "fingerprint": "18b20edd0ffed9b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af1210bdc6032d9c", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/admin/NewsletterPage.jsx:3"}, "properties": {"repobilityId": "963b2f36bb5ebfcb", "scanner": "scanner-primary", "fingerprint": "af1210bdc6032d9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d300721038011719", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SettingsPage.jsx:40"}, "properties": {"repobilityId": "6627dac156f4548f", "scanner": "scanner-primary", "fingerprint": "d300721038011719", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-591d4b408b38fac7", "level": "none", "message": {"text": "Commented-code block (9 lines) in client/src/pages/admin/CommunicationsPageV2.jsx:5"}, "properties": {"repobilityId": "cf39dfcb23f8be97", "scanner": "scanner-primary", "fingerprint": "591d4b408b38fac7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5cd7781786a776a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SocialMediaPage.jsx:54"}, "properties": {"repobilityId": "4c63efda36b1b50f", "scanner": "scanner-primary", "fingerprint": "b5cd7781786a776a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6a4703e29d6bb1e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPageV2.jsx:33"}, "properties": {"repobilityId": "0dfefc23c79f73f9", "scanner": "scanner-primary", "fingerprint": "b6a4703e29d6bb1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-76e1afaa8f24c09f", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/RevenuePage.jsx:8"}, "properties": {"repobilityId": "0a4e09d327f7732e", "scanner": "scanner-primary", "fingerprint": "76e1afaa8f24c09f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bdf17e6237817ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/RevenuePage.jsx:73"}, "properties": {"repobilityId": "7fd5115778d81bec", "scanner": "scanner-primary", "fingerprint": "3bdf17e6237817ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c91a2a8f5922dc68", "level": "none", "message": {"text": "Commented-code block (8 lines) in client/src/pages/admin/CustomerHealthPage.jsx:24"}, "properties": {"repobilityId": "f1fafe33a16c7d8b", "scanner": "scanner-primary", "fingerprint": "c91a2a8f5922dc68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73167f8b3876197f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/CustomerHealthPage.jsx:6"}, "properties": {"repobilityId": "3e6a56fb40984388", "scanner": "scanner-primary", "fingerprint": "73167f8b3876197f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da00949a3c51003a", "level": "none", "message": {"text": "Commented-code block (14 lines) in client/src/pages/admin/SchedulePage.jsx:3"}, "properties": {"repobilityId": "830a9b97be2bb157", "scanner": "scanner-primary", "fingerprint": "da00949a3c51003a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8b00da56c64d32d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/SchedulePage.jsx:366"}, "properties": {"repobilityId": "7760091ff35a2c9f", "scanner": "scanner-primary", "fingerprint": "e8b00da56c64d32d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d04230230c640d25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EmailPage.jsx:13"}, "properties": {"repobilityId": "a5c133546e67d6b9", "scanner": "scanner-primary", "fingerprint": "d04230230c640d25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b0db60bf47fedc1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/TurfHeightReviewPage.jsx:7"}, "properties": {"repobilityId": "03fb85dc1e8f6736", "scanner": "scanner-primary", "fingerprint": "2b0db60bf47fedc1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4a85b1464e0dc80", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/pages/admin/AdminDispatchPage.jsx:81"}, "properties": {"repobilityId": "69495d8e3eea9915", "scanner": "scanner-primary", "fingerprint": "e4a85b1464e0dc80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c9a2d8282c4a07b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/EquipmentPage.jsx:30"}, "properties": {"repobilityId": "d6e1b5e21d3baede", "scanner": "scanner-primary", "fingerprint": "7c9a2d8282c4a07b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f65b1f61a1e4a3a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/ReferralsPage.jsx:23"}, "properties": {"repobilityId": "c0c184d9ee276f9c", "scanner": "scanner-primary", "fingerprint": "4f65b1f61a1e4a3a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b34a9a23c17361ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in client/src/pages/admin/WinLossSlicesCard.jsx:4"}, "properties": {"repobilityId": "6fbc225ccf93325f", "scanner": "scanner-primary", "fingerprint": "b34a9a23c17361ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b72723d5a235ce05", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/pages/admin/WinLossSlicesCard.jsx:16"}, "properties": {"repobilityId": "1bf2cce9560118df", "scanner": "scanner-primary", "fingerprint": "b72723d5a235ce05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-880eaca112b5ef9a", "level": "none", "message": {"text": "Commented-code block (11 lines) in client/src/hooks/useDispatchBoard.js:56"}, "properties": {"repobilityId": "8cb78db2aff768d5", "scanner": "scanner-primary", "fingerprint": "880eaca112b5ef9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dba4530d980edfac", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/hooks/useFeatureFlag.js:38"}, "properties": {"repobilityId": "bd6fdeddf4491312", "scanner": "scanner-primary", "fingerprint": "dba4530d980edfac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0fce31d517b84f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in client/src/hooks/useDispatchAlerts.js:43"}, "properties": {"repobilityId": "e17fcd2b1bc0396e", "scanner": "scanner-primary", "fingerprint": "a0fce31d517b84f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87a5f79919f3d33e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useDispatchAlerts.js:156"}, "properties": {"repobilityId": "1df99ece99c85b8f", "scanner": "scanner-primary", "fingerprint": "87a5f79919f3d33e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bd53d47cfb5bb47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 client/src/hooks/useIntelligenceBar.js:23"}, "properties": {"repobilityId": "270f7e02800ae8cd", "scanner": "scanner-primary", "fingerprint": "0bd53d47cfb5bb47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-718b70e7516de431", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-content-agent.js:24"}, "properties": {"repobilityId": "cfb6cf426ec39884", "scanner": "scanner-primary", "fingerprint": "718b70e7516de431", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4ba9c4a87cd2fb7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-retention-agent.js:8"}, "properties": {"repobilityId": "35e61f206c7452dc", "scanner": "scanner-primary", "fingerprint": "c4ba9c4a87cd2fb7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b3ca85f44c82e5a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-managed-agent.js:24"}, "properties": {"repobilityId": "9ba2d4681fe59881", "scanner": "scanner-primary", "fingerprint": "4b3ca85f44c82e5a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ae3d95ef4fea5c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-bi-agent.js:8"}, "properties": {"repobilityId": "c453663899bc7195", "scanner": "scanner-primary", "fingerprint": "7ae3d95ef4fea5c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0215cfa85f9fd3cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-backlink-strategy-agent.js:26"}, "properties": {"repobilityId": "8cfe6728fde69fd0", "scanner": "scanner-primary", "fingerprint": "0215cfa85f9fd3cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6de7d5a4357715c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/create-lead-response-agent.js:20"}, "properties": {"repobilityId": "63b8484395a2aeb1", "scanner": "scanner-primary", "fingerprint": "b6de7d5a4357715c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ee7b96c3d52e187", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/seed-local-pricing.js:110"}, "properties": {"repobilityId": "ad74a2df9e9ebdc2", "scanner": "scanner-primary", "fingerprint": "5ee7b96c3d52e187", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebf38a115e4859b7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/backfill-customer-contact-fields.js:144"}, "properties": {"repobilityId": "199efbd62a4727e7", "scanner": "scanner-primary", "fingerprint": "ebf38a115e4859b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b120c3ba16aa715", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/export-studio-flow.js:66"}, "properties": {"repobilityId": "1a192be8a896f0a8", "scanner": "scanner-primary", "fingerprint": "2b120c3ba16aa715", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-23893d63282d0a75", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/twilio/verify-studio-flow-contract.js:137"}, "properties": {"repobilityId": "0fc566c844e4470e", "scanner": "scanner-primary", "fingerprint": "23893d63282d0a75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96f393d865d023eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/verify-studio-flow-contract.js:250"}, "properties": {"repobilityId": "41f33ebc4157c9b5", "scanner": "scanner-primary", "fingerprint": "96f393d865d023eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f9bb39d67158271", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/twilio/audit-inbound-routing.js:100"}, "properties": {"repobilityId": "733152ef1902c34a", "scanner": "scanner-primary", "fingerprint": "1f9bb39d67158271", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-827cbc1c12d512d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/blog-schema/schema.ts:192"}, "properties": {"repobilityId": "9f10f361902db6f3", "scanner": "scanner-primary", "fingerprint": "827cbc1c12d512d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb8ab00357439fbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/index.js:147"}, "properties": {"repobilityId": "0126b8c1bb167570", "scanner": "scanner-primary", "fingerprint": "cb8ab00357439fbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb06338e3a36c635", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260514000009_seed_general_pest_service_type_aliases.js:35"}, "properties": {"repobilityId": "77d80f6fb1f53891", "scanner": "scanner-primary", "fingerprint": "cb06338e3a36c635", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ec1809bd6be071c", "level": "note", "message": {"text": "Legacy-named symbol `protocol_canonical_price_seed_v1` in server/models/migrations/20260528000007_protocol_canonical_price_mappings.js:1"}, "properties": {"repobilityId": "8157eceae077b1c4", "scanner": "scanner-primary", "fingerprint": "1ec1809bd6be071c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9ffe583001ea2c7", "level": "note", "message": {"text": "Legacy-named symbol `newsletter_default_v1` in server/models/migrations/20260518000001_email_template_library.js:647"}, "properties": {"repobilityId": "af4947eafd5dcc20", "scanner": "scanner-primary", "fingerprint": "f9ffe583001ea2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3db75af75da6005", "level": "note", "message": {"text": "Legacy-named symbol `idx_service_records_report_v1` in server/models/migrations/20260515000001_service_report_v1_foundation.js:66"}, "properties": {"repobilityId": "010c5aa451f225d0", "scanner": "scanner-primary", "fingerprint": "d3db75af75da6005", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e513781b4057873", "level": "note", "message": {"text": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000005_drop_square_columns.js:29"}, "properties": {"repobilityId": "4e1e3515b5017591", "scanner": "scanner-primary", "fingerprint": "9e513781b4057873", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3df2fb65d87a5657", "level": "note", "message": {"text": "Legacy-named symbol `ff_customer_login_v2` in server/models/migrations/20260427000002_retire_v1_v2_rollout_flags.js:8"}, "properties": {"repobilityId": "928345aeecca5fe3", "scanner": "scanner-primary", "fingerprint": "3df2fb65d87a5657", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9c0e9558bd66a413", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000009_deepen_onboarding_welcome_prep_email_templates.js:375"}, "properties": {"repobilityId": "81f641f59303325b", "scanner": "scanner-primary", "fingerprint": "9c0e9558bd66a413", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-56327c7ed317a36d", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260514000002_tighten_sms_template_copy.js:884"}, "properties": {"repobilityId": "cc5ff96159ca0d7d", "scanner": "scanner-primary", "fingerprint": "56327c7ed317a36d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7493648a5cb46c24", "level": "note", "message": {"text": "Legacy-named symbol `hasLegacy` in server/models/migrations/20260517000001_backfill_legacy_equipment_maintenance.js:9"}, "properties": {"repobilityId": "7078682dc292dd73", "scanner": "scanner-primary", "fingerprint": "7493648a5cb46c24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eb0dc401929223f9", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000011_deepen_service_report_email_templates.js:153"}, "properties": {"repobilityId": "a1b304248d33f183", "scanner": "scanner-primary", "fingerprint": "eb0dc401929223f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02c4d34665090730", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260612000001_estimate_actuals.js:1"}, "properties": {"repobilityId": "3a742737a71802e3", "scanner": "scanner-primary", "fingerprint": "02c4d34665090730", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1be8dda0a02ff406", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260417000006_wipe_square_stripe_ids.js:15"}, "properties": {"repobilityId": "b665a2a37475d05d", "scanner": "scanner-primary", "fingerprint": "1be8dda0a02ff406", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42bcf6fe2b219f7d", "level": "note", "message": {"text": "Legacy-named symbol `report_copy` in server/models/migrations/20260529000003_lawn_protocol_operating_layer.js:87"}, "properties": {"repobilityId": "dd576827e6736507", "scanner": "scanner-primary", "fingerprint": "42bcf6fe2b219f7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c5dfc1a70941aa9", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/models/migrations/20260518000006_sms_template_hardcoded_cleanup.js:1"}, "properties": {"repobilityId": "607ade9a48ceff55", "scanner": "scanner-primary", "fingerprint": "7c5dfc1a70941aa9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e74130059eba5abb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260422000005_business_credentials.js:61"}, "properties": {"repobilityId": "3a6813a6a9f20a2c", "scanner": "scanner-primary", "fingerprint": "e74130059eba5abb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d46bb9546ffa47b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000003_lawn_assessments_fawn_snapshot.js:3"}, "properties": {"repobilityId": "47b87b8857423d38", "scanner": "scanner-primary", "fingerprint": "d46bb9546ffa47b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c76c225f66cfc30f", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/models/migrations/20260611000001_customer_health_scores_reconcile.js:124"}, "properties": {"repobilityId": "0651d8f833f82d4c", "scanner": "scanner-primary", "fingerprint": "c76c225f66cfc30f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c80f01ab1358fab6", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000001_seed_late_payment_email_templates.js:146"}, "properties": {"repobilityId": "56b211ca0aed0ea2", "scanner": "scanner-primary", "fingerprint": "c80f01ab1358fab6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-234dffbc3190203e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260528000031_fix_kb_blackout_charlotte_northport.js:56"}, "properties": {"repobilityId": "5b453e6fe9f4c8be", "scanner": "scanner-primary", "fingerprint": "234dffbc3190203e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67b937eb070d2dbf", "level": "note", "message": {"text": "Legacy-named symbol `house_voice_v1` in server/models/migrations/20260612000020_message_drafts_shadow.js:14"}, "properties": {"repobilityId": "0d7d54106e231e58", "scanner": "scanner-primary", "fingerprint": "67b937eb070d2dbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2532442f25c6e553", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000009_products_catalog_label_fields.js:3"}, "properties": {"repobilityId": "74145cc5bb8e46e5", "scanner": "scanner-primary", "fingerprint": "2532442f25c6e553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ec22556cbf6bbd3", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260610000001_payments_superseded_by.js:1"}, "properties": {"repobilityId": "23d5cb0678c2fa9b", "scanner": "scanner-primary", "fingerprint": "6ec22556cbf6bbd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b3d3071502a5de7", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000008_seed_invoice_followup_email_templates.js:128"}, "properties": {"repobilityId": "ad63714ec18d7468", "scanner": "scanner-primary", "fingerprint": "0b3d3071502a5de7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e060f43760e2c7a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260422000009_scheduled_services_tracking.js:28"}, "properties": {"repobilityId": "c745f051895d0a25", "scanner": "scanner-primary", "fingerprint": "e060f43760e2c7a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c71c5d1f5b591bc", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/models/migrations/20260615000005_scheduled_services_no_show_status.js:60"}, "properties": {"repobilityId": "5785fe6736f64d2e", "scanner": "scanner-primary", "fingerprint": "4c71c5d1f5b591bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49421db275bea02b", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in server/models/migrations/20260529000001_service_closeout_requirements.js:41"}, "properties": {"repobilityId": "392b6dbaf5bad75a", "scanner": "scanner-primary", "fingerprint": "49421db275bea02b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-110747bbc0a60b38", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260531000010_project_report_with_invoice_attachment_copy.js:113"}, "properties": {"repobilityId": "66dd13dff9e619ac", "scanner": "scanner-primary", "fingerprint": "110747bbc0a60b38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d65468d1b1197434", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260602000002_addon_duration.js:1"}, "properties": {"repobilityId": "5f07f840c7ea08bf", "scanner": "scanner-primary", "fingerprint": "d65468d1b1197434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d334d1d8b0644252", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260507000002_normalize_service_names_and_inspection_catalog.js:62"}, "properties": {"repobilityId": "26af8115b8082b5b", "scanner": "scanner-primary", "fingerprint": "d334d1d8b0644252", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7964488f29505ca7", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000004_lawn_assessments_service_id.js:3"}, "properties": {"repobilityId": "2e60f2cbaa173567", "scanner": "scanner-primary", "fingerprint": "7964488f29505ca7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eaf30b72eef20c89", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260426000001_dashboard_alert_state.js:8"}, "properties": {"repobilityId": "fe139e633816ef23", "scanner": "scanner-primary", "fingerprint": "eaf30b72eef20c89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5549b7100ced8063", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260528000021_onetime_pest_setup_premium_model.js:5"}, "properties": {"repobilityId": "5573700344e64314", "scanner": "scanner-primary", "fingerprint": "5549b7100ced8063", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6fa901f7bcb8c2cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260514000004_completion_attempts_resolved_snapshot.js:44"}, "properties": {"repobilityId": "f8ab08e0ccb2912e", "scanner": "scanner-primary", "fingerprint": "6fa901f7bcb8c2cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4e7a46c17cb06d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000011_roach_knockdown_typed_profiles.js:30"}, "properties": {"repobilityId": "d0ef9dad80081e6f", "scanner": "scanner-primary", "fingerprint": "c4e7a46c17cb06d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c920e55fd8c27875", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260429000002_track_token_defaults_and_tz_fix.js:39"}, "properties": {"repobilityId": "8a089a9a78e8d808", "scanner": "scanner-primary", "fingerprint": "c920e55fd8c27875", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-508b692ed55d4b1b", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260611000008_protocol_product_alias_gaps.js:1"}, "properties": {"repobilityId": "3ae0cba51852d369", "scanner": "scanner-primary", "fingerprint": "508b692ed55d4b1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1495ee68402bdfcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260417000008_regenerate_bermuda_zoysia_low_brackets.js:1"}, "properties": {"repobilityId": "8894298e924b5387", "scanner": "scanner-primary", "fingerprint": "1495ee68402bdfcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abfb7d3c57d7738b", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260516000001_service_report_deliveries.js:17"}, "properties": {"repobilityId": "fa727f899f571848", "scanner": "scanner-primary", "fingerprint": "abfb7d3c57d7738b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-03f47abfcee63bdf", "level": "note", "message": {"text": "Legacy-named symbol `20260414000018_lawn_photos_and_knowledge_bridge_v2` in server/models/migrations/20260430000006_lawn_assessment_photos_v2_columns.js:2"}, "properties": {"repobilityId": "69d518aee5cb7245", "scanner": "scanner-primary", "fingerprint": "03f47abfcee63bdf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f28ac2bad738d670", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000006_lawn_assessment_photos_v2_columns.js:5"}, "properties": {"repobilityId": "628d92cffa9a534b", "scanner": "scanner-primary", "fingerprint": "f28ac2bad738d670", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eb730fc8bb383fe", "level": "note", "message": {"text": "Legacy-named symbol `lawn_snapshot_v1` in server/models/migrations/20260527000007_property_health_snapshots_and_recommendations.js:53"}, "properties": {"repobilityId": "43ea41e0038ca42a", "scanner": "scanner-primary", "fingerprint": "5eb730fc8bb383fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cb61d1b14f183156", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/models/migrations/20260611000013_service_report_v1_progress_sms.js:5"}, "properties": {"repobilityId": "f42e23adf2589089", "scanner": "scanner-primary", "fingerprint": "cb61d1b14f183156", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1623828787e65905", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260425000003_seed_lead_sources.js:118"}, "properties": {"repobilityId": "d0a7dd8d83032261", "scanner": "scanner-primary", "fingerprint": "1623828787e65905", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d49c825a2cfd240", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260529000002_project_report_with_invoice_email_template.js:105"}, "properties": {"repobilityId": "748cc3a59982d3be", "scanner": "scanner-primary", "fingerprint": "3d49c825a2cfd240", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a5b92318c3018362", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260514000007_seed_exterior_general_pest_perimeter.js:141"}, "properties": {"repobilityId": "775f73d5bb05a0d4", "scanner": "scanner-primary", "fingerprint": "a5b92318c3018362", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-350325099180c898", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/models/migrations/20260612000002_estimate_deposits.js:1"}, "properties": {"repobilityId": "dc0eca98353920e5", "scanner": "scanner-primary", "fingerprint": "350325099180c898", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c855c70d94bdb707", "level": "note", "message": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000002_repair_hardcoded_sms_template_seeds.js:38"}, "properties": {"repobilityId": "4e54c53323fb550a", "scanner": "scanner-primary", "fingerprint": "c855c70d94bdb707", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4112131c0c108f06", "level": "note", "message": {"text": "Legacy-named symbol `hasOld` in server/models/migrations/20260423000006_remove_legacy_integrations.js:31"}, "properties": {"repobilityId": "22099de1457d1196", "scanner": "scanner-primary", "fingerprint": "4112131c0c108f06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41cfa92fd1674962", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000007_customer_turf_profiles.js:3"}, "properties": {"repobilityId": "42df867e7d87e68c", "scanner": "scanner-primary", "fingerprint": "41cfa92fd1674962", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4108e81fc3b79753", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260611000016_specialty_phase1b_rodent_shadow.js:36"}, "properties": {"repobilityId": "85fba1008b157826", "scanner": "scanner-primary", "fingerprint": "4108e81fc3b79753", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e09873f92ffabe89", "level": "note", "message": {"text": "Legacy-named symbol `flea_2026_v1` in server/models/migrations/20260526000016_flea_offer_pricing_config.js:14"}, "properties": {"repobilityId": "561e3b2914a736f2", "scanner": "scanner-primary", "fingerprint": "e09873f92ffabe89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-94a3fff9866c7fdf", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260521000007_autonomous_content_phase_1.js:79"}, "properties": {"repobilityId": "5b1e9e75e858ec46", "scanner": "scanner-primary", "fingerprint": "94a3fff9866c7fdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ca9080d2983fc7d", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260430000011_municipality_ordinances.js:8"}, "properties": {"repobilityId": "a980fa9fa8307fa0", "scanner": "scanner-primary", "fingerprint": "9ca9080d2983fc7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69193d850746db4f", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260430000005_tech_calibration_bias_direction.js:3"}, "properties": {"repobilityId": "c9123fa8a2ecb3b7", "scanner": "scanner-primary", "fingerprint": "69193d850746db4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5f17eb3e36be0ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260528000031_onetime_pest_quarterly_multiple.js:5"}, "properties": {"repobilityId": "7a34f644fed75ebb", "scanner": "scanner-primary", "fingerprint": "f5f17eb3e36be0ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0e2502bf41f2bef", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260522000002_seed_ach_processing_acknowledgment_templates.js:110"}, "properties": {"repobilityId": "b258bd740c006679", "scanner": "scanner-primary", "fingerprint": "f0e2502bf41f2bef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7223b5e75f9f1dce", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260527000002_seed_prep_wildlife_enrich_bed_bug.js:115"}, "properties": {"repobilityId": "bd5169b99294f6ac", "scanner": "scanner-primary", "fingerprint": "7223b5e75f9f1dce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-165b40569429dc48", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260522000010_data_hygiene.js:97"}, "properties": {"repobilityId": "1306b7e22d4e3b84", "scanner": "scanner-primary", "fingerprint": "165b40569429dc48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7fc27843b10ae73", "level": "note", "message": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260528000008_lawn_pricing_v2_dense_55_floor_config.js:34"}, "properties": {"repobilityId": "d78ac4acb8845533", "scanner": "scanner-primary", "fingerprint": "f7fc27843b10ae73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5ceecd37bdc09038", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260414000026_pricing_config_jsonb.js:1"}, "properties": {"repobilityId": "000007f7613f02b6", "scanner": "scanner-primary", "fingerprint": "5ceecd37bdc09038", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19c4f690389f27cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260610000002_payments_status_disputed_canceled.js:1"}, "properties": {"repobilityId": "21b5bd6e5ec12e15", "scanner": "scanner-primary", "fingerprint": "19c4f690389f27cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4e065162ed72500", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000002_stripe_payment_notification_attempt.js:40"}, "properties": {"repobilityId": "0ee9843eedf1a732", "scanner": "scanner-primary", "fingerprint": "d4e065162ed72500", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15bdbf317fab265f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000010_seed_core_waveguard_products.js:7"}, "properties": {"repobilityId": "6b47506eadbf494c", "scanner": "scanner-primary", "fingerprint": "15bdbf317fab265f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19bdbc093c7f236c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260429000005_waveguard_platinum_tier_to_20.js:32"}, "properties": {"repobilityId": "f4f741b595e42d12", "scanner": "scanner-primary", "fingerprint": "19bdbc093c7f236c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1928069ba8b4a651", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260514000003_protocol_templates.js:69"}, "properties": {"repobilityId": "565f0e72a653a47f", "scanner": "scanner-primary", "fingerprint": "1928069ba8b4a651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5c733923f3c525a", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260514000005_service_records_attestation_audit.js:72"}, "properties": {"repobilityId": "a183275dbe285b30", "scanner": "scanner-primary", "fingerprint": "e5c733923f3c525a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-811c304ac5bb85b6", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/models/migrations/20260611000012_specialty_phase1_cutover.js:44"}, "properties": {"repobilityId": "bffe6845537df609", "scanner": "scanner-primary", "fingerprint": "811c304ac5bb85b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-350566e0bcabf034", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260419000006_terminal_client_errors.js:55"}, "properties": {"repobilityId": "0f9f8d8eaedc5b14", "scanner": "scanner-primary", "fingerprint": "350566e0bcabf034", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9beda059a5ba7f93", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260430000008_equipment_systems_and_calibrations.js:6"}, "properties": {"repobilityId": "cddaae897066731e", "scanner": "scanner-primary", "fingerprint": "9beda059a5ba7f93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1336ecdf0ab5805", "level": "note", "message": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260514000006_delete_service_reminder_legacy_sms_template.js:2"}, "properties": {"repobilityId": "274b69c90f38f38b", "scanner": "scanner-primary", "fingerprint": "d1336ecdf0ab5805", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bbd6257ce1fb4dbf", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260520000001_seed_estimate_followup_final_template.js:50"}, "properties": {"repobilityId": "ea4c19ec86012fb0", "scanner": "scanner-primary", "fingerprint": "bbd6257ce1fb4dbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-91e5c1d7eb00e282", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000012_deepen_account_portal_email_templates.js:393"}, "properties": {"repobilityId": "4678c3ed98231b7d", "scanner": "scanner-primary", "fingerprint": "91e5c1d7eb00e282", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a7c6a846e49e4bec", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000010_deepen_billing_payment_email_templates.js:395"}, "properties": {"repobilityId": "e653f7de9c69f6a2", "scanner": "scanner-primary", "fingerprint": "a7c6a846e49e4bec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-683240ecb2788e55", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260526000008_deepen_quote_estimate_email_templates.js:239"}, "properties": {"repobilityId": "b189690a3c6637fa", "scanner": "scanner-primary", "fingerprint": "683240ecb2788e55", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8cd7d8a3a76754bd", "level": "note", "message": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/models/migrations/20260530000011_lawn_pricing_45_margin_recalibration.js:111"}, "properties": {"repobilityId": "dd648b92207e1114", "scanner": "scanner-primary", "fingerprint": "8cd7d8a3a76754bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f4d5ed76ca703b93", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260418000006_unified_comms_schema.js:117"}, "properties": {"repobilityId": "c3d5e76281aa30c7", "scanner": "scanner-primary", "fingerprint": "f4d5ed76ca703b93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-865d7ee4d072bf66", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000003_seed_account_membership_email_templates.js:375"}, "properties": {"repobilityId": "a09e2ba208fca5a1", "scanner": "scanner-primary", "fingerprint": "865d7ee4d072bf66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a411c0da04e48ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260528000030_rename_lwr_location_id_to_bradenton.js:44"}, "properties": {"repobilityId": "57a3031a4ab373e4", "scanner": "scanner-primary", "fingerprint": "3a411c0da04e48ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cb8c1ee66c86633", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000003_estimate_deposit_flat_config.js:1"}, "properties": {"repobilityId": "8621cbe689b351c6", "scanner": "scanner-primary", "fingerprint": "9cb8c1ee66c86633", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5315c139dd99b11b", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/models/migrations/20260501000001_planner_data_prep.js:4"}, "properties": {"repobilityId": "0f88bfefcfeed5fc", "scanner": "scanner-primary", "fingerprint": "5315c139dd99b11b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3b9ada57b29da95", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260415000008_remove_invoice_due_today.js:13"}, "properties": {"repobilityId": "53a12a9184bde3ef", "scanner": "scanner-primary", "fingerprint": "e3b9ada57b29da95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6dbf002133942d4a", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000002_seed_payment_lifecycle_email_templates.js:266"}, "properties": {"repobilityId": "6f14c07e443e4063", "scanner": "scanner-primary", "fingerprint": "6dbf002133942d4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0b00cd4c860f18b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260612000031_combined_service_cutover.js:279"}, "properties": {"repobilityId": "319d7dac216841f5", "scanner": "scanner-primary", "fingerprint": "0b00cd4c860f18b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdd34549dbb015b3", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/models/migrations/20260414000017_pest_service_costs_and_modifiers.js:5"}, "properties": {"repobilityId": "71cba7a13a4f9e3a", "scanner": "scanner-primary", "fingerprint": "cdd34549dbb015b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef153ebf6f335366", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260419000005_audit_log.js:31"}, "properties": {"repobilityId": "7cbf2f94ab6d6dac", "scanner": "scanner-primary", "fingerprint": "ef153ebf6f335366", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47093617a2a74999", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/models/migrations/20260521000004_seed_project_prep_portal_email_templates.js:227"}, "properties": {"repobilityId": "c92b6b3879f8c47b", "scanner": "scanner-primary", "fingerprint": "47093617a2a74999", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b549182a957c574b", "level": "note", "message": {"text": "Legacy-named symbol `service_reminder_legacy` in server/models/migrations/20260513000002_label_hardcoded_sms_templates.js:50"}, "properties": {"repobilityId": "74bbb68da921de5a", "scanner": "scanner-primary", "fingerprint": "b549182a957c574b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2296e841f2d242b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/models/migrations/20260521000008_autonomous_content_phase_2_serp_snapshots.js:47"}, "properties": {"repobilityId": "6714ce74d634959f", "scanner": "scanner-primary", "fingerprint": "2296e841f2d242b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03e9fa6ce7282e93", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/models/migrations/20260426000010_seed_pest_service_costs.js:24"}, "properties": {"repobilityId": "186bb74cb8ab6506", "scanner": "scanner-primary", "fingerprint": "03e9fa6ce7282e93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac4dae27ed5969d3", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/models/migrations/20260428000012_invoice_payment_reference.js:1"}, "properties": {"repobilityId": "24528238a94e3b05", "scanner": "scanner-primary", "fingerprint": "ac4dae27ed5969d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e47ad7e489f74978", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/config/feature-gates.js:49"}, "properties": {"repobilityId": "9e9899f805c80268", "scanner": "scanner-primary", "fingerprint": "e47ad7e489f74978", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6262dc4235d70c5b", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/config/locations.js:2"}, "properties": {"repobilityId": "c6bae5732fa0a299", "scanner": "scanner-primary", "fingerprint": "6262dc4235d70c5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80a7b6e77313a342", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/estimate-public-sms-template.test.js:88"}, "properties": {"repobilityId": "453bf9022e8df299", "scanner": "scanner-primary", "fingerprint": "80a7b6e77313a342", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-98bc87cfe6dc541b", "level": "note", "message": {"text": "Legacy-named symbol `service_default_v1` in server/tests/admin-email-templates-routes.test.js:223"}, "properties": {"repobilityId": "92cac534b4b5c986", "scanner": "scanner-primary", "fingerprint": "98bc87cfe6dc541b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b3bd07cb05271912", "level": "note", "message": {"text": "Legacy-named symbol `companion_findings_banned_copy` in server/tests/combined-completions.test.js:399"}, "properties": {"repobilityId": "c775e213bdad9cb7", "scanner": "scanner-primary", "fingerprint": "b3bd07cb05271912", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ee55db6ebb115dd6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/admin-communications-sms.test.js:37"}, "properties": {"repobilityId": "ad9315adf7308ca1", "scanner": "scanner-primary", "fingerprint": "ee55db6ebb115dd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf965ccfa49ed8ff", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/service-report-pdf-cache-config.test.js:48"}, "properties": {"repobilityId": "44ade6d2aade6aea", "scanner": "scanner-primary", "fingerprint": "bf965ccfa49ed8ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c8c4326eac0082d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/link-prospect-indexing.test.js:10"}, "properties": {"repobilityId": "f750bebab424376c", "scanner": "scanner-primary", "fingerprint": "7c8c4326eac0082d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ec421c0cb108146", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/blog-idea-gate.test.js:1"}, "properties": {"repobilityId": "f23f420cd536eeff", "scanner": "scanner-primary", "fingerprint": "8ec421c0cb108146", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19eacfb4d78ea844", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/tests/service-report-v1.test.js:1891"}, "properties": {"repobilityId": "df21ee207804d917", "scanner": "scanner-primary", "fingerprint": "19eacfb4d78ea844", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a37499e0b7e33f05", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/content-quality-gate.test.js:289"}, "properties": {"repobilityId": "6c5005d0fcb3ada7", "scanner": "scanner-primary", "fingerprint": "a37499e0b7e33f05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d0dd7e6a7a801d3", "level": "note", "message": {"text": "Legacy-named symbol `unknownLegacy` in server/tests/pricing-engine-termite-measurements.test.js:288"}, "properties": {"repobilityId": "bab99174b1f7c575", "scanner": "scanner-primary", "fingerprint": "0d0dd7e6a7a801d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f29ad4a11da4dddb", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-new-lead-sms-template-migration.test.js:1"}, "properties": {"repobilityId": "dba294763ffca931", "scanner": "scanner-primary", "fingerprint": "f29ad4a11da4dddb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23d7b6f249eaa75a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/autonomous-runner-drought-sms.test.js:17"}, "properties": {"repobilityId": "012656f1c2b2115c", "scanner": "scanner-primary", "fingerprint": "23d7b6f249eaa75a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30914e8c02d580fa", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/project-completion.test.js:445"}, "properties": {"repobilityId": "4d724516235cc6a1", "scanner": "scanner-primary", "fingerprint": "30914e8c02d580fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-25abc277b67cd206", "level": "note", "message": {"text": "Legacy-named symbol `billing_copy` in server/tests/wdo-delivery-routing.test.js:8"}, "properties": {"repobilityId": "cdc1a7b339d2c6aa", "scanner": "scanner-primary", "fingerprint": "25abc277b67cd206", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-31c2a4d491efabb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/internal-link-pr-executor.test.js:263"}, "properties": {"repobilityId": "bd023d0d4588c7be", "scanner": "scanner-primary", "fingerprint": "31c2a4d491efabb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5985594b6dfbaa95", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-pest-pressure-rating.test.js:144"}, "properties": {"repobilityId": "a0478826d1212a6f", "scanner": "scanner-primary", "fingerprint": "5985594b6dfbaa95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3550541f9fc9c92", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/content-guardrails.test.js:201"}, "properties": {"repobilityId": "24290eec7bbbbb4b", "scanner": "scanner-primary", "fingerprint": "d3550541f9fc9c92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c3955088f76ef3b", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in server/tests/service-closeout-requirements.test.js:54"}, "properties": {"repobilityId": "ea3aec5a4c92a1c2", "scanner": "scanner-primary", "fingerprint": "7c3955088f76ef3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-012813c991210044", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/pest-pressure-trend.test.js:51"}, "properties": {"repobilityId": "5d25ef7a54c5f981", "scanner": "scanner-primary", "fingerprint": "012813c991210044", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-560fe5dfafd6a75b", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/messaging-twilio-provider.test.js:48"}, "properties": {"repobilityId": "37b93bee28f5c3fd", "scanner": "scanner-primary", "fingerprint": "560fe5dfafd6a75b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-60ca7a8a2dbabfb1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/protected-pages.test.js:63"}, "properties": {"repobilityId": "5905460d40cd0bbb", "scanner": "scanner-primary", "fingerprint": "60ca7a8a2dbabfb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9016c1feac2f08e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/invoice-preview-parity.test.js:1"}, "properties": {"repobilityId": "cadd33a77cfd1a2d", "scanner": "scanner-primary", "fingerprint": "d9016c1feac2f08e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01c5790a3a702904", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-assessment-route-contracts.test.js:108"}, "properties": {"repobilityId": "5ec7466283d450b7", "scanner": "scanner-primary", "fingerprint": "01c5790a3a702904", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0160a873673c8bb2", "level": "note", "message": {"text": "Legacy-named symbol `shadow_judge_v1` in server/tests/sms-shadow-judge.test.js:128"}, "properties": {"repobilityId": "d818d658b66561dc", "scanner": "scanner-primary", "fingerprint": "0160a873673c8bb2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7b2a42006c5a2434", "level": "note", "message": {"text": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/tests/call-extraction-eval-fixtures.test.js:13"}, "properties": {"repobilityId": "d99b376a0e2b8d0d", "scanner": "scanner-primary", "fingerprint": "7b2a42006c5a2434", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e85ec7f45f6b0edd", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-lead-service-pest-sms-template-migration.test.js:1"}, "properties": {"repobilityId": "78c859f2e152169f", "scanner": "scanner-primary", "fingerprint": "e85ec7f45f6b0edd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-465440cb53463580", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-recommendation-engine.test.js:51"}, "properties": {"repobilityId": "751168c09707fb7d", "scanner": "scanner-primary", "fingerprint": "465440cb53463580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9691fefe3ba46cb7", "level": "note", "message": {"text": "Legacy-named symbol `banned_copy` in server/tests/photo-analysis.test.js:71"}, "properties": {"repobilityId": "bb7b49ee23c896b5", "scanner": "scanner-primary", "fingerprint": "9691fefe3ba46cb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-60bcb11d1909e3f5", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/tests/lawn-snapshot.test.js:22"}, "properties": {"repobilityId": "3f8cc4f88bb49916", "scanner": "scanner-primary", "fingerprint": "60bcb11d1909e3f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa4753aff6b5ca0d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/invoice-scheduled-review-preserve.test.js:1"}, "properties": {"repobilityId": "ddb5784dd0fe420c", "scanner": "scanner-primary", "fingerprint": "fa4753aff6b5ca0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ae8fc4f4161c302", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/seo-completion-gate.test.js:193"}, "properties": {"repobilityId": "1b97b9301d49471a", "scanner": "scanner-primary", "fingerprint": "8ae8fc4f4161c302", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-347b68b81b80c291", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-dead-legacy-sms-templates-migration.test.js:1"}, "properties": {"repobilityId": "d4992d6caab17eed", "scanner": "scanner-primary", "fingerprint": "347b68b81b80c291", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-276c6cfb2a347bee", "level": "note", "message": {"text": "Legacy-named symbol `rendered_placeholder_copy` in server/tests/email-template-library.test.js:206"}, "properties": {"repobilityId": "400a54f83444fff6", "scanner": "scanner-primary", "fingerprint": "276c6cfb2a347bee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c80ca7ce041f684e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/email-template-library.test.js:711"}, "properties": {"repobilityId": "b23a0a7672c9e8c2", "scanner": "scanner-primary", "fingerprint": "c80ca7ce041f684e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc5f01fd1cb0858e", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-suppressed-data.test.js:93"}, "properties": {"repobilityId": "55ba2528211e0d5f", "scanner": "scanner-primary", "fingerprint": "bc5f01fd1cb0858e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-15391f252d9cc31e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/reports-public-suppressed-data.test.js:173"}, "properties": {"repobilityId": "c6e5bceb93fbb03d", "scanner": "scanner-primary", "fingerprint": "15391f252d9cc31e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7031aedcccfbc08", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/waveguard-existing-services.test.js:3"}, "properties": {"repobilityId": "18e2f9127b6bbd31", "scanner": "scanner-primary", "fingerprint": "f7031aedcccfbc08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-682f09c654161e06", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/lawn-observation-single-voice.test.js:3"}, "properties": {"repobilityId": "7930ae4a76a9c6a0", "scanner": "scanner-primary", "fingerprint": "682f09c654161e06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-828111c426f4283c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/token-health-meta.test.js:113"}, "properties": {"repobilityId": "532f94725573d9b9", "scanner": "scanner-primary", "fingerprint": "828111c426f4283c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2502c8ede9a426e0", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/tests/completion-attempts.test.js:387"}, "properties": {"repobilityId": "4d39c46daada25bd", "scanner": "scanner-primary", "fingerprint": "2502c8ede9a426e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e533831eb986f18", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/equipment-systems-and-calibrations.test.js:142"}, "properties": {"repobilityId": "0a39db8b852203a7", "scanner": "scanner-primary", "fingerprint": "2e533831eb986f18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4ad7501d2dec4da", "level": "note", "message": {"text": "Legacy-named symbol `gemini_v2` in server/tests/call-field-candidates.test.js:90"}, "properties": {"repobilityId": "2751b167a00b1bae", "scanner": "scanner-primary", "fingerprint": "e4ad7501d2dec4da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ffd81e873eead877", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/pest-pressure-store.test.js:41"}, "properties": {"repobilityId": "a4b24772c4af33c4", "scanner": "scanner-primary", "fingerprint": "ffd81e873eead877", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f535fa938d34e150", "level": "note", "message": {"text": "Legacy-named symbol `city_stale_old` in server/tests/facts-bank.test.js:201"}, "properties": {"repobilityId": "b75d35e5880714d8", "scanner": "scanner-primary", "fingerprint": "f535fa938d34e150", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7067dfe4d455e0ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/intelligence-bar-write-gate-contract.test.js:241"}, "properties": {"repobilityId": "61902726928dfa22", "scanner": "scanner-primary", "fingerprint": "7067dfe4d455e0ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34a2f2ffbecfe14e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/stripe-payments.test.js:240"}, "properties": {"repobilityId": "0f53b651be0a3a96", "scanner": "scanner-primary", "fingerprint": "34a2f2ffbecfe14e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6917824036bf807", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/reports-public-events.test.js:78"}, "properties": {"repobilityId": "08595d62975235c2", "scanner": "scanner-primary", "fingerprint": "a6917824036bf807", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-811b18646bfd01c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/admin-newsletter-patch-event-ids.test.js:97"}, "properties": {"repobilityId": "2d3b021d80a05f9f", "scanner": "scanner-primary", "fingerprint": "811b18646bfd01c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9daec9211fb9d63", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/completion-attempts-snapshot.test.js:51"}, "properties": {"repobilityId": "9df224a81e4b9e4f", "scanner": "scanner-primary", "fingerprint": "f9daec9211fb9d63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aeb5def08a7285b", "level": "note", "message": {"text": "Legacy-named symbol `complete_service_one_tap_v1` in server/tests/completion-defaults-resolver.test.js:108"}, "properties": {"repobilityId": "296a41c5d81b2063", "scanner": "scanner-primary", "fingerprint": "0aeb5def08a7285b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23a7209317eab589", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/completion-defaults-resolver.test.js:9"}, "properties": {"repobilityId": "b269154ac16ce7ab", "scanner": "scanner-primary", "fingerprint": "23a7209317eab589", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0bfd8de7cd86272", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-pest-prep-sms-templates-migration.test.js:1"}, "properties": {"repobilityId": "3b3d928c08883774", "scanner": "scanner-primary", "fingerprint": "d0bfd8de7cd86272", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf412731d9723df9", "level": "note", "message": {"text": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/tests/pricing-engine-pest-hardening.test.js:125"}, "properties": {"repobilityId": "cc91d845e253ba50", "scanner": "scanner-primary", "fingerprint": "bf412731d9723df9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b73a98ed8763ce1", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/autonomous-runner.test.js:703"}, "properties": {"repobilityId": "41b125c4dc9e419f", "scanner": "scanner-primary", "fingerprint": "6b73a98ed8763ce1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a89ab05187752f41", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/content-brief-builder.test.js:172"}, "properties": {"repobilityId": "6531d2efeee4fc04", "scanner": "scanner-primary", "fingerprint": "a89ab05187752f41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f82303ea5690ebed", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/internal-link-review-queue.test.js:54"}, "properties": {"repobilityId": "33c7871c289d8748", "scanner": "scanner-primary", "fingerprint": "f82303ea5690ebed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db0d7acae2c59335", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/tests/service-report-delivery-progress.test.js:17"}, "properties": {"repobilityId": "4aa60f2c3cefb117", "scanner": "scanner-primary", "fingerprint": "db0d7acae2c59335", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-37c3da4d18e9a817", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/appointment-reminders-dedup.test.js:266"}, "properties": {"repobilityId": "f61eee504f05ce69", "scanner": "scanner-primary", "fingerprint": "37c3da4d18e9a817", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-441ff148d1f44656", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/pricing-engine.regression.test.js:40"}, "properties": {"repobilityId": "90b4c46737a18a96", "scanner": "scanner-primary", "fingerprint": "441ff148d1f44656", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-822cb0b8b87faf1c", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/estimate-show-your-work.test.js:5"}, "properties": {"repobilityId": "46c8a5a6ee7c4c8d", "scanner": "scanner-primary", "fingerprint": "822cb0b8b87faf1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9c5c59c73b36356", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/newsletter.test.js:216"}, "properties": {"repobilityId": "1156ec6b2de1dfee", "scanner": "scanner-primary", "fingerprint": "e9c5c59c73b36356", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9930ad9d2b2b4da3", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/tests/admin-pest-pressure.test.js:463"}, "properties": {"repobilityId": "ae84077479a65af7", "scanner": "scanner-primary", "fingerprint": "9930ad9d2b2b4da3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06c94cf6dff00dd", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/tests/estimate-public-existing-customer.test.js:3"}, "properties": {"repobilityId": "b4f72e4300f430d3", "scanner": "scanner-primary", "fingerprint": "f06c94cf6dff00dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09554c5384b6e611", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/tests/remove-onetime-quote-followup-sms-template-migration.test.js:1"}, "properties": {"repobilityId": "408710c2a7bf3973", "scanner": "scanner-primary", "fingerprint": "09554c5384b6e611", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9104df2a30e6eb79", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/estimate-membership-context.test.js:104"}, "properties": {"repobilityId": "c43af97dfb72f06f", "scanner": "scanner-primary", "fingerprint": "9104df2a30e6eb79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c95d37a9636e0c7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/tests/estimate-deposits.test.js:750"}, "properties": {"repobilityId": "3076abc907a71b93", "scanner": "scanner-primary", "fingerprint": "4c95d37a9636e0c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f75545fc077fe7a", "level": "note", "message": {"text": "Legacy-named symbol `appointmentCandidateChangedVsLegacy` in server/tests/replay-call-extraction-variance.test.js:27"}, "properties": {"repobilityId": "f9f60392fcce7110", "scanner": "scanner-primary", "fingerprint": "8f75545fc077fe7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9f4936892a3b6fb0", "level": "note", "message": {"text": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/tests/call-extraction-v2.test.js:3"}, "properties": {"repobilityId": "324f602b956a4d61", "scanner": "scanner-primary", "fingerprint": "9f4936892a3b6fb0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e892fd702cc892f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/blog-astro-pipeline.test.js:1794"}, "properties": {"repobilityId": "5944995b6c8ae0cf", "scanner": "scanner-primary", "fingerprint": "e892fd702cc892f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9c981a9f59317b0", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/tests/autonomous-pr-poller.test.js:86"}, "properties": {"repobilityId": "9b2cf42b3dfaa65c", "scanner": "scanner-primary", "fingerprint": "b9c981a9f59317b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-944b9325262e651c", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/middleware/twilio-signature.js:187"}, "properties": {"repobilityId": "d1716daffb1d0426", "scanner": "scanner-primary", "fingerprint": "944b9325262e651c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1076fa41aa5cf367", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/scripts/v2-promotion-readiness.js:31"}, "properties": {"repobilityId": "cb7899ec4f7d41b4", "scanner": "scanner-primary", "fingerprint": "1076fa41aa5cf367", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-251b76f57e67ca75", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/scripts/backfill-broken-pdfs.js:36"}, "properties": {"repobilityId": "6a181c0ed0737dd5", "scanner": "scanner-primary", "fingerprint": "251b76f57e67ca75", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-da4789d62a68523c", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/scripts/autonomous-engine-calibration.js:270"}, "properties": {"repobilityId": "a4c4e459e4dbcd68", "scanner": "scanner-primary", "fingerprint": "da4789d62a68523c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0baedba557dcb6c", "level": "note", "message": {"text": "Legacy-named symbol `nLegacy` in server/scripts/audit-waveguard-protocol-material-costs.js:222"}, "properties": {"repobilityId": "896da0be3bd3d7f3", "scanner": "scanner-primary", "fingerprint": "e0baedba557dcb6c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-778ab7d76d92cae2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/scripts/migrate-beehiiv-subscribers.js:259"}, "properties": {"repobilityId": "23f203037b898bd1", "scanner": "scanner-primary", "fingerprint": "778ab7d76d92cae2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d91deb1c031233d9", "level": "note", "message": {"text": "Legacy-named symbol `appointment_candidate_changed_vs_legacy` in server/scripts/replay-call-extraction-variance.js:67"}, "properties": {"repobilityId": "0efe118476590198", "scanner": "scanner-primary", "fingerprint": "d91deb1c031233d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1b047fe9d75d7af", "level": "note", "message": {"text": "Legacy-named symbol `tooOld` in server/scripts/backfill-invoice-followups.js:66"}, "properties": {"repobilityId": "f585925e779297f5", "scanner": "scanner-primary", "fingerprint": "d1b047fe9d75d7af", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c8d1761ec1feb181", "level": "note", "message": {"text": "Legacy-named symbol `mapServiceCategoryToLegacy` in server/utils/extraction-compat.js:41"}, "properties": {"repobilityId": "5225bce0e2ed4bf9", "scanner": "scanner-primary", "fingerprint": "c8d1761ec1feb181", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fbdd3de4f21572c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/utils/cron-lock.js:62"}, "properties": {"repobilityId": "3d9837a15084678c", "scanner": "scanner-primary", "fingerprint": "fbdd3de4f21572c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27952bbb2f03abf9", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/utils/route-cache.js:3"}, "properties": {"repobilityId": "f964b599e8672b10", "scanner": "scanner-primary", "fingerprint": "27952bbb2f03abf9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b18127f4cb69790", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-reviews.js:121"}, "properties": {"repobilityId": "a714f0ff9c3c7f35", "scanner": "scanner-primary", "fingerprint": "7b18127f4cb69790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88fa8a6407fed049", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/integrations-vendor-price-worker.js:97"}, "properties": {"repobilityId": "faa20f42d8e5616b", "scanner": "scanner-primary", "fingerprint": "88fa8a6407fed049", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8127608f8c398799", "level": "note", "message": {"text": "Legacy-named symbol `credentials_v1` in server/routes/admin-credentials.js:9"}, "properties": {"repobilityId": "cda304be5b68bec7", "scanner": "scanner-primary", "fingerprint": "8127608f8c398799", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2438e614802b14c", "level": "note", "message": {"text": "Legacy-named symbol `photo_caption_banned_copy` in server/routes/admin-dispatch.js:1827"}, "properties": {"repobilityId": "dd6fc29d48766e2c", "scanner": "scanner-primary", "fingerprint": "d2438e614802b14c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c54711abea70fba5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/admin-dispatch.js:84"}, "properties": {"repobilityId": "4206a2a45f5cc9fb", "scanner": "scanner-primary", "fingerprint": "c54711abea70fba5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4a910c10277d5e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-dispatch.js:1131"}, "properties": {"repobilityId": "833993c9c0c36f69", "scanner": "scanner-primary", "fingerprint": "a4a910c10277d5e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-388d3120effd3999", "level": "note", "message": {"text": "Legacy-named symbol `report_copy` in server/routes/admin-projects.js:2505"}, "properties": {"repobilityId": "d1734f85d99ec512", "scanner": "scanner-primary", "fingerprint": "388d3120effd3999", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e1e754585ef3214", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-projects.js:477"}, "properties": {"repobilityId": "b9d2620c72f19415", "scanner": "scanner-primary", "fingerprint": "9e1e754585ef3214", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea11bb5a0f34e5ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-timetracking.js:9"}, "properties": {"repobilityId": "0159a0e43b4c838f", "scanner": "scanner-primary", "fingerprint": "ea11bb5a0f34e5ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51809dc4e814de74", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/routes/reports-public.js:210"}, "properties": {"repobilityId": "3d178cc599a45490", "scanner": "scanner-primary", "fingerprint": "51809dc4e814de74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f95145b9ec1a94a0", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/reports-public.js:16"}, "properties": {"repobilityId": "57ac85c0fa37b2d5", "scanner": "scanner-primary", "fingerprint": "f95145b9ec1a94a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-741c38c25c2708f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/reports-public.js:850"}, "properties": {"repobilityId": "91a7137d3d5dcb41", "scanner": "scanner-primary", "fingerprint": "741c38c25c2708f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25ac6077fe5f9706", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-billing-health.js:99"}, "properties": {"repobilityId": "5d9cb3296d0fe0d4", "scanner": "scanner-primary", "fingerprint": "25ac6077fe5f9706", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f515ddc827db9300", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/routes/documents.js:605"}, "properties": {"repobilityId": "d33a7610f44f5ad2", "scanner": "scanner-primary", "fingerprint": "f515ddc827db9300", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c5768b861d14bde5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/documents.js:929"}, "properties": {"repobilityId": "bc02c763b9c323a8", "scanner": "scanner-primary", "fingerprint": "c5768b861d14bde5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a56becf05ecf7547", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/admin-triage.js:191"}, "properties": {"repobilityId": "2644dfad1b56b9e9", "scanner": "scanner-primary", "fingerprint": "a56becf05ecf7547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bab4c96708ee4e35", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-invoices.js:644"}, "properties": {"repobilityId": "ba8ac70df5a4d0e6", "scanner": "scanner-primary", "fingerprint": "bab4c96708ee4e35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e296863267e4739", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-pest-pressure.js:34"}, "properties": {"repobilityId": "4be986ffd7acace9", "scanner": "scanner-primary", "fingerprint": "6e296863267e4739", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be1e95a3934318f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-referrals.js:96"}, "properties": {"repobilityId": "b00a34843f2143d1", "scanner": "scanner-primary", "fingerprint": "be1e95a3934318f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8684fa61a58b7f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/lead-webhook.js:168"}, "properties": {"repobilityId": "74e20be32e5b3dea", "scanner": "scanner-primary", "fingerprint": "e8684fa61a58b7f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b70355d1a573c84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/bouncie.js:76"}, "properties": {"repobilityId": "cb4cf665e555e8f4", "scanner": "scanner-primary", "fingerprint": "2b70355d1a573c84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e38117dd82e0c5ad", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-customers.js:980"}, "properties": {"repobilityId": "a2d59e333c959e88", "scanner": "scanner-primary", "fingerprint": "e38117dd82e0c5ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55d697fad6c1eaf7", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/stripe-terminal.js:58"}, "properties": {"repobilityId": "91b4883bd56db71c", "scanner": "scanner-primary", "fingerprint": "55d697fad6c1eaf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82ada9881b1f7c53", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-geofence.js:137"}, "properties": {"repobilityId": "2915d679ec348aeb", "scanner": "scanner-primary", "fingerprint": "82ada9881b1f7c53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2659b8a8bdf49423", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/property-lookup-v2.js:125"}, "properties": {"repobilityId": "0a4a25a45736aad8", "scanner": "scanner-primary", "fingerprint": "2659b8a8bdf49423", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1e8c02f073929db", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/track-public.js:56"}, "properties": {"repobilityId": "aa163ef12e432108", "scanner": "scanner-primary", "fingerprint": "f1e8c02f073929db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73ed390616f13412", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/onboarding.js:418"}, "properties": {"repobilityId": "d57b1632a898221c", "scanner": "scanner-primary", "fingerprint": "73ed390616f13412", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8129cab38fd72683", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/public-quote.js:112"}, "properties": {"repobilityId": "29cf6de2e79bcd2c", "scanner": "scanner-primary", "fingerprint": "8129cab38fd72683", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96e5a62ecb2ca01a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-health.js:96"}, "properties": {"repobilityId": "4f4327f24a2c6c8d", "scanner": "scanner-primary", "fingerprint": "96e5a62ecb2ca01a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19712ddd52396ae8", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-estimates.js:657"}, "properties": {"repobilityId": "6a0bbe3426b06ad7", "scanner": "scanner-primary", "fingerprint": "19712ddd52396ae8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e0b3be7c338514f", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/routes/admin-lawn-assessment.js:1246"}, "properties": {"repobilityId": "70b5e793e8c1a490", "scanner": "scanner-primary", "fingerprint": "2e0b3be7c338514f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a91c51e6ff16c0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-lawn-assessment.js:237"}, "properties": {"repobilityId": "071f0539e09d43e1", "scanner": "scanner-primary", "fingerprint": "3a91c51e6ff16c0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abc330b43e8a7947", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/routes/stripe-webhook-helpers.js:7"}, "properties": {"repobilityId": "a9cd2d8e0da95ad7", "scanner": "scanner-primary", "fingerprint": "abc330b43e8a7947", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38b5f030ea577b19", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/pay-v2.js:244"}, "properties": {"repobilityId": "6e142fb0c6901ee0", "scanner": "scanner-primary", "fingerprint": "38b5f030ea577b19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0738a222c1347f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/tech-track.js:90"}, "properties": {"repobilityId": "854fb3d6028cd673", "scanner": "scanner-primary", "fingerprint": "a0738a222c1347f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02e50ad9355d2d25", "level": "note", "message": {"text": "Legacy-named symbol `20260514000002_tighten_sms_template_copy` in server/routes/admin-sms-templates.js:6"}, "properties": {"repobilityId": "2ce8866176c969ad", "scanner": "scanner-primary", "fingerprint": "02e50ad9355d2d25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e7e3bae1a2ec793b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-gbp.js:232"}, "properties": {"repobilityId": "2a662c5652c6e5ed", "scanner": "scanner-primary", "fingerprint": "e7e3bae1a2ec793b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-32416bd6b585138c", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/tracking.js:89"}, "properties": {"repobilityId": "e8963db976af5a7c", "scanner": "scanner-primary", "fingerprint": "32416bd6b585138c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4239e75d020466f", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-dashboard.js:23"}, "properties": {"repobilityId": "0b7c18e44ffd0e20", "scanner": "scanner-primary", "fingerprint": "c4239e75d020466f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6010bb3ffcc85e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-social-media.js:12"}, "properties": {"repobilityId": "ed6f6d37898800e3", "scanner": "scanner-primary", "fingerprint": "e6010bb3ffcc85e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0a6f4e4bb4f5d7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-equipment-systems.js:155"}, "properties": {"repobilityId": "7aa6f83279141b9b", "scanner": "scanner-primary", "fingerprint": "c0a6f4e4bb4f5d7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df2a372929db7dd6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/twilio-voice-webhook.js:30"}, "properties": {"repobilityId": "a60c5087e0aa497e", "scanner": "scanner-primary", "fingerprint": "df2a372929db7dd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99911aa3f831c7e5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/twilio-voice-webhook.js:283"}, "properties": {"repobilityId": "d9073209c04cd5ef", "scanner": "scanner-primary", "fingerprint": "99911aa3f831c7e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-747b43e06601896d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-notifications.js:18"}, "properties": {"repobilityId": "5087d90d3bf3fda4", "scanner": "scanner-primary", "fingerprint": "747b43e06601896d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-607e2ff55a960b13", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-communications.js:228"}, "properties": {"repobilityId": "417a6838b4af4d78", "scanner": "scanner-primary", "fingerprint": "607e2ff55a960b13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd2c4fc1bee689b", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/routes/stripe-webhook.js:82"}, "properties": {"repobilityId": "37dce530e3d9dcbc", "scanner": "scanner-primary", "fingerprint": "7cd2c4fc1bee689b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c64a32fafe76b30", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-schedule.js:270"}, "properties": {"repobilityId": "9b72a21cd35227e5", "scanner": "scanner-primary", "fingerprint": "8c64a32fafe76b30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54d112c295f60363", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-intelligence-bar.js:106"}, "properties": {"repobilityId": "d24865ba772b33d2", "scanner": "scanner-primary", "fingerprint": "54d112c295f60363", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a5849c069e2d345", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-newsletter.js:36"}, "properties": {"repobilityId": "689712b46eb4762c", "scanner": "scanner-primary", "fingerprint": "0a5849c069e2d345", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f186471de5a20c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-content-v2.js:188"}, "properties": {"repobilityId": "3025bf3c52b87c52", "scanner": "scanner-primary", "fingerprint": "0f186471de5a20c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9f1ace586287e94", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-requests.js:121"}, "properties": {"repobilityId": "cf8ddef3fbe52543", "scanner": "scanner-primary", "fingerprint": "c9f1ace586287e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4385a5bac02bf371", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/twilio-webhook.js:144"}, "properties": {"repobilityId": "32d0e5cae118b74f", "scanner": "scanner-primary", "fingerprint": "4385a5bac02bf371", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0c4b1b324001eaa", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-settings.js:104"}, "properties": {"repobilityId": "c559c34d2937d9c5", "scanner": "scanner-primary", "fingerprint": "c0c4b1b324001eaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c221f20f708c3c0e", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/admin-push.js:60"}, "properties": {"repobilityId": "64ac5dba569fee1d", "scanner": "scanner-primary", "fingerprint": "c221f20f708c3c0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69849ed78ef63ff5", "level": "note", "message": {"text": "Legacy-named symbol `revokeOld` in server/routes/admin-service-outlines.js:397"}, "properties": {"repobilityId": "6e1ebdd93da881d3", "scanner": "scanner-primary", "fingerprint": "69849ed78ef63ff5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b82c2ec81213fbc6", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/admin-inventory.js:1352"}, "properties": {"repobilityId": "7a6786a31cac2579", "scanner": "scanner-primary", "fingerprint": "b82c2ec81213fbc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c259482fcbad2843", "level": "note", "message": {"text": "Legacy-named symbol `report_copy` in server/routes/admin-protocols.js:1132"}, "properties": {"repobilityId": "7fce54b288545abd", "scanner": "scanner-primary", "fingerprint": "c259482fcbad2843", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8e6cd92abee33a71", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/tech-timetracking.js:11"}, "properties": {"repobilityId": "5e8ae71fa1842d2f", "scanner": "scanner-primary", "fingerprint": "8e6cd92abee33a71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97d56d54fc006261", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/public-newsletter.js:179"}, "properties": {"repobilityId": "6bc9c549738a4fc7", "scanner": "scanner-primary", "fingerprint": "97d56d54fc006261", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-825e839066dab108", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/public-newsletter.js:308"}, "properties": {"repobilityId": "aedcfc9e8345c601", "scanner": "scanner-primary", "fingerprint": "825e839066dab108", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38ce68066d9b7d91", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-backlink-agent-v2.js:366"}, "properties": {"repobilityId": "d0a3498f388a9890", "scanner": "scanner-primary", "fingerprint": "38ce68066d9b7d91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-683d9c7255fc6acb", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/routes/webhooks-bouncie.js:179"}, "properties": {"repobilityId": "a93b1bd56d2ed280", "scanner": "scanner-primary", "fingerprint": "683d9c7255fc6acb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39fd781083e495f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-payments-reconcile.js:16"}, "properties": {"repobilityId": "d8f57e5a2863250c", "scanner": "scanner-primary", "fingerprint": "39fd781083e495f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ffe275a418173ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/admin-call-recordings.js:46"}, "properties": {"repobilityId": "e272c2ba045b33cf", "scanner": "scanner-primary", "fingerprint": "3ffe275a418173ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8f06e63d6894c464", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/routes/estimate-slots-public.js:303"}, "properties": {"repobilityId": "7b9cccbc769f0317", "scanner": "scanner-primary", "fingerprint": "8f06e63d6894c464", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15356e7df968b2e0", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/webhooks-sendgrid.js:195"}, "properties": {"repobilityId": "d24be5af7bc342ca", "scanner": "scanner-primary", "fingerprint": "15356e7df968b2e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31ed276f9cc95523", "level": "note", "message": {"text": "Legacy-named symbol `newsletter_default_v1` in server/routes/admin-email-templates.js:177"}, "properties": {"repobilityId": "f35b50f75ade44d7", "scanner": "scanner-primary", "fingerprint": "31ed276f9cc95523", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8183fea1b5fe85aa", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/routes/lawn-health.js:158"}, "properties": {"repobilityId": "d41428f6bffb877d", "scanner": "scanner-primary", "fingerprint": "8183fea1b5fe85aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2e3f2c840dc015b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-customer-intel.js:36"}, "properties": {"repobilityId": "6f4cb7f8c49b04f7", "scanner": "scanner-primary", "fingerprint": "2e3f2c840dc015b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60384b9cbc6caf1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-agent-decisions.js:306"}, "properties": {"repobilityId": "7d8a2a587c120491", "scanner": "scanner-primary", "fingerprint": "60384b9cbc6caf1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d84dd87a08378ad", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/routes/booking.js:411"}, "properties": {"repobilityId": "66fa9048c248f4a4", "scanner": "scanner-primary", "fingerprint": "3d84dd87a08378ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c75eb94caa085ed3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/booking.js:28"}, "properties": {"repobilityId": "64a058b09b130f14", "scanner": "scanner-primary", "fingerprint": "c75eb94caa085ed3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85bd7516628c6efb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/review-gate.js:55"}, "properties": {"repobilityId": "c37f8e736ae70c8e", "scanner": "scanner-primary", "fingerprint": "85bd7516628c6efb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f8d895c89549715", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/feed.js:372"}, "properties": {"repobilityId": "40cf3450c3178126", "scanner": "scanner-primary", "fingerprint": "1f8d895c89549715", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2fde9f2c4c3b7198", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/routes/admin-customer-turf-profile.js:33"}, "properties": {"repobilityId": "6a0229f7d4a5dd5a", "scanner": "scanner-primary", "fingerprint": "2fde9f2c4c3b7198", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8005af27e2d1732a", "level": "none", "message": {"text": "Commented-code block (15 lines) in server/routes/estimate-public.js:111"}, "properties": {"repobilityId": "e6966136608490a6", "scanner": "scanner-primary", "fingerprint": "8005af27e2d1732a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5aa8539c7220515", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/routes/estimate-public.js:4617"}, "properties": {"repobilityId": "3523ca94c7d78a2d", "scanner": "scanner-primary", "fingerprint": "b5aa8539c7220515", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-875bcce38149b928", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/sockets/auth.js:65"}, "properties": {"repobilityId": "852bad4ce0a26062", "scanner": "scanner-primary", "fingerprint": "875bcce38149b928", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e659a1cd2a5a9c85", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/sockets/index.js:51"}, "properties": {"repobilityId": "ed93156991fc3b4b", "scanner": "scanner-primary", "fingerprint": "e659a1cd2a5a9c85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2e06515cd0e91c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/lawn-assessment.js:252"}, "properties": {"repobilityId": "eea4fbf6e21c7f92", "scanner": "scanner-primary", "fingerprint": "c2e06515cd0e91c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df0e0c8213acad4b", "level": "note", "message": {"text": "Legacy-named symbol `house_voice_suggest_v1` in server/services/sms-suggest-mode.js:55"}, "properties": {"repobilityId": "96a95b9eccba6fb9", "scanner": "scanner-primary", "fingerprint": "df0e0c8213acad4b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0880f22476b3a58", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/sms-suggest-mode.js:292"}, "properties": {"repobilityId": "bb8a6af2eff894f3", "scanner": "scanner-primary", "fingerprint": "c0880f22476b3a58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e23bffa058861d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/stripe-banking.js:801"}, "properties": {"repobilityId": "270869bae3c241b9", "scanner": "scanner-primary", "fingerprint": "5e23bffa058861d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa40efd3ec4517a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/twilio.js:12"}, "properties": {"repobilityId": "d18882f2621b09d3", "scanner": "scanner-primary", "fingerprint": "fa40efd3ec4517a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35e55ee2a91b6bdb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/knowledge-base.js:309"}, "properties": {"repobilityId": "9c4136d655716e8f", "scanner": "scanner-primary", "fingerprint": "35e55ee2a91b6bdb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-461005428bf30662", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/estimate-converter.js:136"}, "properties": {"repobilityId": "1dae9151b1d41c41", "scanner": "scanner-primary", "fingerprint": "461005428bf30662", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e6ae0c5768a0d05", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/newsletter-autopilot.js:102"}, "properties": {"repobilityId": "d2ff6af890e0cdcd", "scanner": "scanner-primary", "fingerprint": "3e6ae0c5768a0d05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e21376454cd7a30", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/lead-response-tools.js:213"}, "properties": {"repobilityId": "a4caa88ed9d6bf9a", "scanner": "scanner-primary", "fingerprint": "7e21376454cd7a30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37bf0b837089385c", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/rebooker.js:25"}, "properties": {"repobilityId": "302559a8a4a9923e", "scanner": "scanner-primary", "fingerprint": "37bf0b837089385c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb554c712028df9b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bi-agent.js:20"}, "properties": {"repobilityId": "6141340867f25011", "scanner": "scanner-primary", "fingerprint": "fb554c712028df9b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eabcbe5365d4945b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/trimmed-system-prompts.js:13"}, "properties": {"repobilityId": "ba922f1280d19366", "scanner": "scanner-primary", "fingerprint": "eabcbe5365d4945b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b8b1566760867d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/lawn-photo-merge.js:5"}, "properties": {"repobilityId": "f36e9f3b1f8f2778", "scanner": "scanner-primary", "fingerprint": "6b8b1566760867d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8851c549bf51a8c", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/dashboard-alerts-cron.js:5"}, "properties": {"repobilityId": "e8c15d719f3c7450", "scanner": "scanner-primary", "fingerprint": "e8851c549bf51a8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bfea5e7aee1c252", "level": "none", "message": {"text": "Commented-code block (16 lines) in server/services/google-business.js:453"}, "properties": {"repobilityId": "eb8744d9dd4334f1", "scanner": "scanner-primary", "fingerprint": "3bfea5e7aee1c252", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61231d0d7df77178", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/google-business.js:249"}, "properties": {"repobilityId": "f0824fdd631f0287", "scanner": "scanner-primary", "fingerprint": "61231d0d7df77178", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e5552cfecdfe0dcc", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/bi-agent-tools.js:355"}, "properties": {"repobilityId": "282ed7c2a792e80b", "scanner": "scanner-primary", "fingerprint": "e5552cfecdfe0dcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-793ed4f597736728", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/sms-draft-verifier.js:88"}, "properties": {"repobilityId": "8628015b285f4eba", "scanner": "scanner-primary", "fingerprint": "793ed4f597736728", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20f8a7e49d65fb66", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/event-freshness.js:62"}, "properties": {"repobilityId": "891e43e5f6feef3d", "scanner": "scanner-primary", "fingerprint": "20f8a7e49d65fb66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d48776be4e9cfed", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/admin-estimate-persistence.js:216"}, "properties": {"repobilityId": "ca702b3852ac82a4", "scanner": "scanner-primary", "fingerprint": "1d48776be4e9cfed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8b42b1bbd3e6415", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/newsletter-draft.js:175"}, "properties": {"repobilityId": "0771db4d68771d51", "scanner": "scanner-primary", "fingerprint": "a8b42b1bbd3e6415", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f5e4ca36082ba9e", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/sms-shadow-backfill.js:42"}, "properties": {"repobilityId": "122abcb288da11df", "scanner": "scanner-primary", "fingerprint": "7f5e4ca36082ba9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6dcc95b80442b5c", "level": "note", "message": {"text": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-graduation.js:137"}, "properties": {"repobilityId": "19ad866ea80594e4", "scanner": "scanner-primary", "fingerprint": "d6dcc95b80442b5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-541781d2b209a71a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/sms-graduation.js:154"}, "properties": {"repobilityId": "ce2dcc204603ad25", "scanner": "scanner-primary", "fingerprint": "541781d2b209a71a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-799e1caaab6ba08e", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/email-template.js:322"}, "properties": {"repobilityId": "f488a2d7d5ee6261", "scanner": "scanner-primary", "fingerprint": "799e1caaab6ba08e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16b349167bbcbc81", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/service-completion-profiles.js:5"}, "properties": {"repobilityId": "f2d86f8eaaace6cd", "scanner": "scanner-primary", "fingerprint": "16b349167bbcbc81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2391da3e8c949b22", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/prepaid-series.js:1"}, "properties": {"repobilityId": "fd623e0be90ec7a1", "scanner": "scanner-primary", "fingerprint": "2391da3e8c949b22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7657bcc3e133ad3", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/event-ingestion.js:40"}, "properties": {"repobilityId": "b7ec8b84f4931cf4", "scanner": "scanner-primary", "fingerprint": "f7657bcc3e133ad3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c119f754fe66bc86", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/dispatch-alerts.js:336"}, "properties": {"repobilityId": "0ee27aff2e9ecd11", "scanner": "scanner-primary", "fingerprint": "c119f754fe66bc86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30e0dc21b2385efc", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/estimate-follow-up.js:119"}, "properties": {"repobilityId": "2c4707768109d25c", "scanner": "scanner-primary", "fingerprint": "30e0dc21b2385efc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e739e85a30fce5e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/bouncie.js:350"}, "properties": {"repobilityId": "f05b8c44abbbcab0", "scanner": "scanner-primary", "fingerprint": "e739e85a30fce5e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-844b926ece3ce4d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/bouncie.js:59"}, "properties": {"repobilityId": "5f6ab0c851174451", "scanner": "scanner-primary", "fingerprint": "844b926ece3ce4d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78343aad2d00a1f6", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/scheduler.js:46"}, "properties": {"repobilityId": "d89de48e4e55b2c1", "scanner": "scanner-primary", "fingerprint": "78343aad2d00a1f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05da6b6487f3e975", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/newsletter-sender.js:32"}, "properties": {"repobilityId": "e862213896fb8892", "scanner": "scanner-primary", "fingerprint": "05da6b6487f3e975", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebdbe03ad0fe9694", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/estimate-expiration.js:47"}, "properties": {"repobilityId": "8e1cf42f5d851716", "scanner": "scanner-primary", "fingerprint": "ebdbe03ad0fe9694", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75a6c53faf3357ca", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/estimate-slot-availability.js:651"}, "properties": {"repobilityId": "08cb91f56b9ebafe", "scanner": "scanner-primary", "fingerprint": "75a6c53faf3357ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c533d8de401ee01", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content-scheduler.js:167"}, "properties": {"repobilityId": "9e29ad0d4e4df086", "scanner": "scanner-primary", "fingerprint": "9c533d8de401ee01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07cdad222539dca0", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/lead-source-resolver.js:31"}, "properties": {"repobilityId": "591e5ad1c5915e29", "scanner": "scanner-primary", "fingerprint": "07cdad222539dca0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1f28eb5b2616461", "level": "note", "message": {"text": "Legacy-named symbol `house_voice_auto_send_v1` in server/services/sms-auto-send.js:42"}, "properties": {"repobilityId": "201e3174e231b11c", "scanner": "scanner-primary", "fingerprint": "f1f28eb5b2616461", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b636ae5a470ca39f", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/sms-auto-send.js:63"}, "properties": {"repobilityId": "1c8449712d89be39", "scanner": "scanner-primary", "fingerprint": "b636ae5a470ca39f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e50d110d447f0ffc", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/price-sync.js:72"}, "properties": {"repobilityId": "861c6e6e325ff187", "scanner": "scanner-primary", "fingerprint": "e50d110d447f0ffc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c54127e4142d65f1", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/pest-recap.js:86"}, "properties": {"repobilityId": "27cf8633e013e440", "scanner": "scanner-primary", "fingerprint": "c54127e4142d65f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-045d91753b23cb09", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/forecast-analyzer.js:30"}, "properties": {"repobilityId": "610ef4da5087e9ff", "scanner": "scanner-primary", "fingerprint": "045d91753b23cb09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-69532cb6e48e0feb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/recurring-appointment-seeder.js:89"}, "properties": {"repobilityId": "d970bd8e365ea1e7", "scanner": "scanner-primary", "fingerprint": "69532cb6e48e0feb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29b371c93bcac2b2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/project-types.js:116"}, "properties": {"repobilityId": "36b6e1a0aff61de3", "scanner": "scanner-primary", "fingerprint": "29b371c93bcac2b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea3e5329ad122f32", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/reschedule-sms.js:160"}, "properties": {"repobilityId": "8ea1c5838fbd5375", "scanner": "scanner-primary", "fingerprint": "ea3e5329ad122f32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f1feeb0652c7c12", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in server/services/service-closeout-requirements.js:14"}, "properties": {"repobilityId": "1b723ea571e126da", "scanner": "scanner-primary", "fingerprint": "4f1feeb0652c7c12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9be7c4b9004fa95c", "level": "none", "message": {"text": "Commented-code block (11 lines) in server/services/track-transitions.js:40"}, "properties": {"repobilityId": "e6ab4144774d8871", "scanner": "scanner-primary", "fingerprint": "9be7c4b9004fa95c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a574d2b891fb1b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/lead-attribution.js:4"}, "properties": {"repobilityId": "e674cddf0729f0e7", "scanner": "scanner-primary", "fingerprint": "e1a574d2b891fb1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-190ac92be0265a8f", "level": "note", "message": {"text": "Legacy-named symbol `legacy_gemini_v1` in server/services/call-route-decisions.js:72"}, "properties": {"repobilityId": "37bf958ef5159577", "scanner": "scanner-primary", "fingerprint": "190ac92be0265a8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bd9b07899dc5b600", "level": "note", "message": {"text": "Legacy-named symbol `lawn_snapshot_v1` in server/services/lawn-snapshot.js:12"}, "properties": {"repobilityId": "9528c2c6a7436f9d", "scanner": "scanner-primary", "fingerprint": "bd9b07899dc5b600", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6539d35883c8cc50", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/lawn-snapshot.js:365"}, "properties": {"repobilityId": "1e8c5276da7c1b6f", "scanner": "scanner-primary", "fingerprint": "6539d35883c8cc50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8777002e183c475", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/call-triage-flags.js:44"}, "properties": {"repobilityId": "20d5b529fd08cee7", "scanner": "scanner-primary", "fingerprint": "f8777002e183c475", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ce618e5a79d041e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/waveguard-existing-services.js:4"}, "properties": {"repobilityId": "69122b75801256e3", "scanner": "scanner-primary", "fingerprint": "1ce618e5a79d041e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7de89cbebf547b53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sms-media.js:135"}, "properties": {"repobilityId": "57a93585aff3ceca", "scanner": "scanner-primary", "fingerprint": "7de89cbebf547b53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ccaa3699192bd15", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/tech-late-detector.js:78"}, "properties": {"repobilityId": "12230bac46752783", "scanner": "scanner-primary", "fingerprint": "2ccaa3699192bd15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7815c7d9fc1dce97", "level": "note", "message": {"text": "Legacy-named symbol `rendered_placeholder_copy` in server/services/email-template-library.js:170"}, "properties": {"repobilityId": "6a7809f6f1f7aa2f", "scanner": "scanner-primary", "fingerprint": "7815c7d9fc1dce97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9152f506f1bb291b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/email-template-library.js:546"}, "properties": {"repobilityId": "b709de890c6eca26", "scanner": "scanner-primary", "fingerprint": "9152f506f1bb291b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3186991ae27bb592", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/review-request.js:247"}, "properties": {"repobilityId": "8b1cc8b3d6420c1e", "scanner": "scanner-primary", "fingerprint": "3186991ae27bb592", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9f0bda2102f0279", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/estimate-membership-context.js:7"}, "properties": {"repobilityId": "acce6f8bd1bfd5e9", "scanner": "scanner-primary", "fingerprint": "c9f0bda2102f0279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7330a5bfd87ffb00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/route-optimizer.js:114"}, "properties": {"repobilityId": "51aac550e3afa607", "scanner": "scanner-primary", "fingerprint": "7330a5bfd87ffb00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-326c048b073daee0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/annual-prepay-renewals.js:9"}, "properties": {"repobilityId": "5018fc861cbaea10", "scanner": "scanner-primary", "fingerprint": "326c048b073daee0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daedc768c92c0c95", "level": "note", "message": {"text": "Legacy-named symbol `inferred_v1` in server/services/service-library.js:445"}, "properties": {"repobilityId": "490224546e8b8d6b", "scanner": "scanner-primary", "fingerprint": "daedc768c92c0c95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-39797978d2bc1268", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/service-library.js:246"}, "properties": {"repobilityId": "abfcf571a9ca44e5", "scanner": "scanner-primary", "fingerprint": "39797978d2bc1268", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-177cad32da1cac08", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/invoice.js:649"}, "properties": {"repobilityId": "fe262e06100bda24", "scanner": "scanner-primary", "fingerprint": "177cad32da1cac08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-695bbbbbbe2cc90b", "level": "none", "message": {"text": "Commented-code block (12 lines) in server/services/estimate-deposits.js:58"}, "properties": {"repobilityId": "0d45dcb893281ffc", "scanner": "scanner-primary", "fingerprint": "695bbbbbbe2cc90b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7757a5bcf3f4725", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/context-aggregator.js:5"}, "properties": {"repobilityId": "5b055af4e332d054", "scanner": "scanner-primary", "fingerprint": "b7757a5bcf3f4725", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a05515f2d248a85d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/lawn-intelligence.js:41"}, "properties": {"repobilityId": "eb7ac817a0c9961f", "scanner": "scanner-primary", "fingerprint": "a05515f2d248a85d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec8dcae9406c3771", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/lead-response-agent.js:247"}, "properties": {"repobilityId": "72024ad1d68b96f5", "scanner": "scanner-primary", "fingerprint": "ec8dcae9406c3771", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98d13f7fc36d13dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/lead-response-agent.js:52"}, "properties": {"repobilityId": "2cc12b2b7ed01a94", "scanner": "scanner-primary", "fingerprint": "98d13f7fc36d13dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-605a007ff606a05a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/social-content-studio.js:350"}, "properties": {"repobilityId": "e135a6bf5f21735f", "scanner": "scanner-primary", "fingerprint": "605a007ff606a05a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88747936629e7b5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/social-media.js:61"}, "properties": {"repobilityId": "6010addd002dffd1", "scanner": "scanner-primary", "fingerprint": "88747936629e7b5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b09c76e31a517251", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-media.js:696"}, "properties": {"repobilityId": "b38726590aecf7b4", "scanner": "scanner-primary", "fingerprint": "b09c76e31a517251", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61fb60da6f22566d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/rain-out.js:238"}, "properties": {"repobilityId": "5b87bc12f4db1f9c", "scanner": "scanner-primary", "fingerprint": "61fb60da6f22566d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-499356e48382371f", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/tech-status.js:283"}, "properties": {"repobilityId": "ce109652abcced8c", "scanner": "scanner-primary", "fingerprint": "499356e48382371f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99ab7986de6f19d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/social-card-renderer.js:4"}, "properties": {"repobilityId": "81245c4d43160f1f", "scanner": "scanner-primary", "fingerprint": "99ab7986de6f19d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7c8ffef550606ef", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/sendgrid-mail.js:74"}, "properties": {"repobilityId": "82c3bdb46e719722", "scanner": "scanner-primary", "fingerprint": "c7c8ffef550606ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6321922300071ef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/sendgrid-mail.js:135"}, "properties": {"repobilityId": "e2cf658e0d4326fb", "scanner": "scanner-primary", "fingerprint": "c6321922300071ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c92cc3cfbbf1ed0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/newsletter-validator.js:8"}, "properties": {"repobilityId": "80658bec574f2d3d", "scanner": "scanner-primary", "fingerprint": "9c92cc3cfbbf1ed0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0fd1dc3abd93f99", "level": "note", "message": {"text": "Legacy-named symbol `gemini_v2` in server/services/call-field-candidates.js:61"}, "properties": {"repobilityId": "dee815555fad6f43", "scanner": "scanner-primary", "fingerprint": "d0fd1dc3abd93f99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3a94b93e363d4c6b", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/sms-shadow-drafter.js:30"}, "properties": {"repobilityId": "cf841a81993dc664", "scanner": "scanner-primary", "fingerprint": "3a94b93e363d4c6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9299680530631173", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/dashboard-alerts.js:4"}, "properties": {"repobilityId": "cb67b0d0f81b052a", "scanner": "scanner-primary", "fingerprint": "9299680530631173", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-509d1893e1c70697", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/lawn-grass-context.js:62"}, "properties": {"repobilityId": "9b4d74a08588d5e9", "scanner": "scanner-primary", "fingerprint": "509d1893e1c70697", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41ea227539c60dbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/appointment-reminders.js:54"}, "properties": {"repobilityId": "ce6d2ce056243be7", "scanner": "scanner-primary", "fingerprint": "41ea227539c60dbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c85c4bbba21cfc78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/appointment-reminders.js:183"}, "properties": {"repobilityId": "a5715ef500984f57", "scanner": "scanner-primary", "fingerprint": "c85c4bbba21cfc78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd8f14e266f18e8e", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/geofence-handler.js:416"}, "properties": {"repobilityId": "2a08c317b4c170e9", "scanner": "scanner-primary", "fingerprint": "bd8f14e266f18e8e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-603d14dc85008652", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/call-recording-processor.js:831"}, "properties": {"repobilityId": "c64f45c99c401c87", "scanner": "scanner-primary", "fingerprint": "603d14dc85008652", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90c2c207f6c91947", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/call-recording-processor.js:799"}, "properties": {"repobilityId": "ad74736d99e23dcb", "scanner": "scanner-primary", "fingerprint": "90c2c207f6c91947", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8faf8a5698c3f34", "level": "note", "message": {"text": "Legacy-named symbol `report_copy` in server/services/lawn-protocol-operating-layer.js:51"}, "properties": {"repobilityId": "d05577c2fda51b3a", "scanner": "scanner-primary", "fingerprint": "b8faf8a5698c3f34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1a01d37d52965c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/social-feed.js:215"}, "properties": {"repobilityId": "8326814d8e083e7d", "scanner": "scanner-primary", "fingerprint": "d1a01d37d52965c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b35f50d7ee85915", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/geofence-matcher.js:50"}, "properties": {"repobilityId": "034ba02072d97a7f", "scanner": "scanner-primary", "fingerprint": "1b35f50d7ee85915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-151d8d93ed126d50", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/invoice-followups.js:337"}, "properties": {"repobilityId": "8a1dc0ece8c87a6a", "scanner": "scanner-primary", "fingerprint": "151d8d93ed126d50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9eef6ba0c86c896", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/notification-triggers.js:333"}, "properties": {"repobilityId": "ff6db137472a9c23", "scanner": "scanner-primary", "fingerprint": "b9eef6ba0c86c896", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3281cda1971596a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/slot-reservation.js:115"}, "properties": {"repobilityId": "ad437d66609cc108", "scanner": "scanner-primary", "fingerprint": "3281cda1971596a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6372eb90e652d945", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/estimate-winloss.js:49"}, "properties": {"repobilityId": "5a4050aa9f832643", "scanner": "scanner-primary", "fingerprint": "6372eb90e652d945", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae5d096bc2b61144", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/payment-method-consents.js:19"}, "properties": {"repobilityId": "8de170e252e465f2", "scanner": "scanner-primary", "fingerprint": "ae5d096bc2b61144", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-892f8d4f8ae4c612", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/event-dedup.js:208"}, "properties": {"repobilityId": "745cd2948ef7a48b", "scanner": "scanner-primary", "fingerprint": "892f8d4f8ae4c612", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50a7c19f24427681", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/newsletter-subscribers.js:12"}, "properties": {"repobilityId": "7e7bb9a0af16769e", "scanner": "scanner-primary", "fingerprint": "50a7c19f24427681", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c2bd0bd1674543b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/token-health.js:123"}, "properties": {"repobilityId": "be66e6cb46ed6b37", "scanner": "scanner-primary", "fingerprint": "2c2bd0bd1674543b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-173743c840e95d5b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/token-health.js:37"}, "properties": {"repobilityId": "4bdfb066d6a42101", "scanner": "scanner-primary", "fingerprint": "173743c840e95d5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9a83e2a91e23fdd", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/event-normalizer.js:117"}, "properties": {"repobilityId": "d8efda158cc3a53e", "scanner": "scanner-primary", "fingerprint": "c9a83e2a91e23fdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70b6be4f5bf2fa53", "level": "note", "message": {"text": "Legacy-named symbol `tree_shrub_closeout_v1` in server/services/tree-shrub-closeout.js:1"}, "properties": {"repobilityId": "031894e85209c035", "scanner": "scanner-primary", "fingerprint": "70b6be4f5bf2fa53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e474af418fc070af", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/tree-shrub-closeout.js:400"}, "properties": {"repobilityId": "ce5b0361824ce719", "scanner": "scanner-primary", "fingerprint": "e474af418fc070af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-291f8304c6c40b54", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/property-lookup-canary.js:54"}, "properties": {"repobilityId": "89207fd23ff20f6a", "scanner": "scanner-primary", "fingerprint": "291f8304c6c40b54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d5b835206ddf6e0", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/geocoder.js:40"}, "properties": {"repobilityId": "971ba5eb80bf7ada", "scanner": "scanner-primary", "fingerprint": "1d5b835206ddf6e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c9d5ef6cb6c7e26", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/stripe.js:20"}, "properties": {"repobilityId": "f2dd312afef775c7", "scanner": "scanner-primary", "fingerprint": "6c9d5ef6cb6c7e26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acde9f9147a0a2f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/project-email.js:294"}, "properties": {"repobilityId": "7fff5775337d56d1", "scanner": "scanner-primary", "fingerprint": "acde9f9147a0a2f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a84f1f7953e72eb5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/retention-agent.js:21"}, "properties": {"repobilityId": "aa9bdba12c007ea7", "scanner": "scanner-primary", "fingerprint": "a84f1f7953e72eb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3357984d5afbe00", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/services/lawn-recommendation-engine.js:123"}, "properties": {"repobilityId": "abbf58510c90e080", "scanner": "scanner-primary", "fingerprint": "e3357984d5afbe00", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1b9e0e680c804f52", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/completion-attempts.js:5"}, "properties": {"repobilityId": "4f575bb46fa930da", "scanner": "scanner-primary", "fingerprint": "1b9e0e680c804f52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a4b6178df0d468b", "level": "note", "message": {"text": "Legacy-named symbol `complete_service_one_tap_v1` in server/services/completion-defaults-resolver.js:72"}, "properties": {"repobilityId": "25a8e9f01139f314", "scanner": "scanner-primary", "fingerprint": "5a4b6178df0d468b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ce1cbee6a4713347", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/completion-defaults-resolver.js:32"}, "properties": {"repobilityId": "ba3548d2865771cc", "scanner": "scanner-primary", "fingerprint": "ce1cbee6a4713347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-130d960efd3c530e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/competitor-tracker.js:20"}, "properties": {"repobilityId": "799205981d8cd0e8", "scanner": "scanner-primary", "fingerprint": "130d960efd3c530e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33cd3c3b6a1e3f1a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/availability.js:129"}, "properties": {"repobilityId": "5f67bf9260a1ec96", "scanner": "scanner-primary", "fingerprint": "33cd3c3b6a1e3f1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aee72d9a20750158", "level": "note", "message": {"text": "Legacy-named symbol `shadow_judge_v1` in server/services/sms-shadow-judge.js:34"}, "properties": {"repobilityId": "9f58403e901505b4", "scanner": "scanner-primary", "fingerprint": "aee72d9a20750158", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f082274b87d1d09a", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/sms-shadow-judge.js:253"}, "properties": {"repobilityId": "db52a69d112d152a", "scanner": "scanner-primary", "fingerprint": "f082274b87d1d09a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4170c837b7378c1f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/billing-cron.js:98"}, "properties": {"repobilityId": "0cee5a632f49037c", "scanner": "scanner-primary", "fingerprint": "4170c837b7378c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17b5e38ea06b0358", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/job-status.js:303"}, "properties": {"repobilityId": "c3b99f78a88d94a8", "scanner": "scanner-primary", "fingerprint": "17b5e38ea06b0358", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b294005fa230d24", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/job-status.js:240"}, "properties": {"repobilityId": "008ec150fdc418bf", "scanner": "scanner-primary", "fingerprint": "3b294005fa230d24", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37c8cb10f0ae4380", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/completion-recap.js:4"}, "properties": {"repobilityId": "5352f31830ffb4c8", "scanner": "scanner-primary", "fingerprint": "37c8cb10f0ae4380", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0903ae2070da706", "level": "note", "message": {"text": "Legacy-named symbol `service_report_satellite_treatment_map_v1` in server/services/maps/basemap-provider.js:16"}, "properties": {"repobilityId": "52a05298b19a1a25", "scanner": "scanner-primary", "fingerprint": "c0903ae2070da706", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c2aeb5a2be28350e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content-astro/frontmatter.js:74"}, "properties": {"repobilityId": "8554e7216fba6805", "scanner": "scanner-primary", "fingerprint": "c2aeb5a2be28350e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dd4afc6761724aa", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/content-astro/facts-bank-loader.js:42"}, "properties": {"repobilityId": "fd8cc50c3048c925", "scanner": "scanner-primary", "fingerprint": "4dd4afc6761724aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d998ed4a91a52f3a", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/content-astro/spoke-sites.js:80"}, "properties": {"repobilityId": "56550cecb7f3a116", "scanner": "scanner-primary", "fingerprint": "d998ed4a91a52f3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d1869779d4778f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/content-astro/schema-validator.js:7"}, "properties": {"repobilityId": "1f8ac503506ef7e4", "scanner": "scanner-primary", "fingerprint": "0d1869779d4778f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-acdbf0eae914b842", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content-astro/facts-bank-auditor.js:49"}, "properties": {"repobilityId": "9ada7baa7027fcf2", "scanner": "scanner-primary", "fingerprint": "acdbf0eae914b842", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fa222d2936b2c59", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content-astro/pages-poll.js:56"}, "properties": {"repobilityId": "76b892e9a6fcf160", "scanner": "scanner-primary", "fingerprint": "3fa222d2936b2c59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a73102f86720e229", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content-astro/astro-publisher.js:61"}, "properties": {"repobilityId": "b59bdd91885b5248", "scanner": "scanner-primary", "fingerprint": "a73102f86720e229", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3134230eb02727f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content-astro/astro-publisher.js:495"}, "properties": {"repobilityId": "c12d0cdf0f29dd4d", "scanner": "scanner-primary", "fingerprint": "d3134230eb02727f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e62daa9dadb75d3d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/email/auto-unsubscribe.js:62"}, "properties": {"repobilityId": "8dc5224af38f1b86", "scanner": "scanner-primary", "fingerprint": "e62daa9dadb75d3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f862873c8ad279bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/modifiers.js:4"}, "properties": {"repobilityId": "7af27483f8683c06", "scanner": "scanner-primary", "fingerprint": "f862873c8ad279bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c02e12c247a324d0", "level": "note", "message": {"text": "Legacy-named symbol `invalid_pest_pricing_version_defaulted_to_v1` in server/services/pricing-engine/service-pricing.js:838"}, "properties": {"repobilityId": "4e991d10f8ad5a9f", "scanner": "scanner-primary", "fingerprint": "c02e12c247a324d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9061d7cf3d2cd7d8", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/pricing-engine/service-pricing.js:1505"}, "properties": {"repobilityId": "f4688e1ee740058d", "scanner": "scanner-primary", "fingerprint": "9061d7cf3d2cd7d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f711b42161b87b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/estimate-engine.js:1"}, "properties": {"repobilityId": "dcb7657ef02751c4", "scanner": "scanner-primary", "fingerprint": "4f711b42161b87b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0012642da348b2e6", "level": "note", "message": {"text": "Legacy-named symbol `lawn_pricing_v2` in server/services/pricing-engine/db-bridge.js:736"}, "properties": {"repobilityId": "1db1ba5e2b5871f0", "scanner": "scanner-primary", "fingerprint": "0012642da348b2e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7ae7f4da760dd4fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/db-bridge.js:1"}, "properties": {"repobilityId": "00bfe5c90ed0ad62", "scanner": "scanner-primary", "fingerprint": "7ae7f4da760dd4fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-985d453f2c5102ac", "level": "note", "message": {"text": "Legacy-named symbol `stinging_v2` in server/services/pricing-engine/v1-legacy-mapper.js:159"}, "properties": {"repobilityId": "4ec6a902397e245b", "scanner": "scanner-primary", "fingerprint": "985d453f2c5102ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00334299a1c5bd8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/v1-legacy-mapper.js:8"}, "properties": {"repobilityId": "13548aba6678bcf7", "scanner": "scanner-primary", "fingerprint": "00334299a1c5bd8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df9d21a0161ff39f", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/pricing-engine/discount-engine.js:18"}, "properties": {"repobilityId": "00db4c5ff376deef", "scanner": "scanner-primary", "fingerprint": "df9d21a0161ff39f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-415b26b6776876b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pricing-engine/constants.js:1"}, "properties": {"repobilityId": "13ee086cbb318aad", "scanner": "scanner-primary", "fingerprint": "415b26b6776876b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed8a092f3c8930a9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/ai-assistant/managed-assistant.js:52"}, "properties": {"repobilityId": "0c8229aea2c171d5", "scanner": "scanner-primary", "fingerprint": "ed8a092f3c8930a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d793f3088857fcf", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/ai-assistant/tools-expanded.js:404"}, "properties": {"repobilityId": "05fe1e6ee1577375", "scanner": "scanner-primary", "fingerprint": "2d793f3088857fcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13134a268adcc832", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/service-report/service-line-configs.js:168"}, "properties": {"repobilityId": "ff97b43fa1e457c4", "scanner": "scanner-primary", "fingerprint": "13134a268adcc832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d654783e6b97ab4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/turf-height.js:27"}, "properties": {"repobilityId": "0f746210cbc2dfe9", "scanner": "scanner-primary", "fingerprint": "d654783e6b97ab4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5bf81ca3cedd302", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/email-delivery.js:192"}, "properties": {"repobilityId": "2568d81540cd03a9", "scanner": "scanner-primary", "fingerprint": "e5bf81ca3cedd302", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be27bd6ace188b4f", "level": "note", "message": {"text": "Legacy-named symbol `service_report_ai_summary_v1` in server/services/service-report/ai-summary.js:5"}, "properties": {"repobilityId": "bf171da73858d6f0", "scanner": "scanner-primary", "fingerprint": "be27bd6ace188b4f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8e7c40acdca959cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/dynamic-context.js:273"}, "properties": {"repobilityId": "f8e15841db2dbdcc", "scanner": "scanner-primary", "fingerprint": "8e7c40acdca959cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbdc2c17922a0580", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery-queue.js:46"}, "properties": {"repobilityId": "a9ab22f670aa8224", "scanner": "scanner-primary", "fingerprint": "dbdc2c17922a0580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3f3fd88b0a5d9c6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/activity-indicators.js:699"}, "properties": {"repobilityId": "77409ffa70e04db5", "scanner": "scanner-primary", "fingerprint": "3f3fd88b0a5d9c6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23ccd364dbacbd5b", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/pdf-queue.js:82"}, "properties": {"repobilityId": "dca92438edaa6e9f", "scanner": "scanner-primary", "fingerprint": "23ccd364dbacbd5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cd17346578ae80cc", "level": "note", "message": {"text": "Legacy-named symbol `banned_copy` in server/services/service-report/photo-analysis.js:87"}, "properties": {"repobilityId": "d5529eaf4a42f638", "scanner": "scanner-primary", "fingerprint": "cd17346578ae80cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-82e3ef4cc54616f3", "level": "note", "message": {"text": "Legacy-named symbol `service_report_v1` in server/services/service-report/delivery.js:30"}, "properties": {"repobilityId": "0d053e385c83226c", "scanner": "scanner-primary", "fingerprint": "82e3ef4cc54616f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-795c392fcf780ee8", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/irrigation-advice.js:86"}, "properties": {"repobilityId": "cae328f6ab75bd74", "scanner": "scanner-primary", "fingerprint": "795c392fcf780ee8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2818a49a268125d7", "level": "note", "message": {"text": "Legacy-named symbol `service_report_premium_experience_v1` in server/services/service-report/premium-experience.js:5"}, "properties": {"repobilityId": "67787db7fe2131fc", "scanner": "scanner-primary", "fingerprint": "2818a49a268125d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c5aeee6fcce454fe", "level": "note", "message": {"text": "Legacy-named symbol `sms_preview_v1` in server/services/service-report/preview-image.js:9"}, "properties": {"repobilityId": "a2a63d5ac32b22aa", "scanner": "scanner-primary", "fingerprint": "c5aeee6fcce454fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5975aa50f43d0d5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/pdf-storage.js:27"}, "properties": {"repobilityId": "99566e88b3d0c519", "scanner": "scanner-primary", "fingerprint": "5975aa50f43d0d5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3cb4635417f3317", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/application-conditions.js:131"}, "properties": {"repobilityId": "32af459cf8508c33", "scanner": "scanner-primary", "fingerprint": "e3cb4635417f3317", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b87e3d61becae4b9", "level": "note", "message": {"text": "Legacy-named symbol `companion_findings_banned_copy` in server/services/service-report/companion-completions.js:170"}, "properties": {"repobilityId": "34f8d28c0357fe88", "scanner": "scanner-primary", "fingerprint": "b87e3d61becae4b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b651f6d3a4e060e5", "level": "note", "message": {"text": "Legacy-named symbol `customer_copy` in server/services/service-report/report-data.js:1485"}, "properties": {"repobilityId": "d8e5cfb801fe05d1", "scanner": "scanner-primary", "fingerprint": "b651f6d3a4e060e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d79fc37f72b20c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/service-report/report-data.js:234"}, "properties": {"repobilityId": "744cdc1933d64eae", "scanner": "scanner-primary", "fingerprint": "4d79fc37f72b20c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53a00317d7e21b60", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/service-report/report-copy-context.js:1"}, "properties": {"repobilityId": "baeaa98fd897a358", "scanner": "scanner-primary", "fingerprint": "53a00317d7e21b60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d4ae225993f0bf2", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/property-lookup/ai-property-lookup.js:181"}, "properties": {"repobilityId": "ed9853a40abfd30a", "scanner": "scanner-primary", "fingerprint": "2d4ae225993f0bf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d367af5254762f54", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/property-lookup/parcel-gis.js:170"}, "properties": {"repobilityId": "bbfcc09d41e0a1fd", "scanner": "scanner-primary", "fingerprint": "d367af5254762f54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8ba6a55c876b118", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/property-lookup/wdo-history-lookup.js:168"}, "properties": {"repobilityId": "d4790ef8fd256ac0", "scanner": "scanner-primary", "fingerprint": "b8ba6a55c876b118", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edd3df684910a1a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/property-lookup/lookup-cache.js:56"}, "properties": {"repobilityId": "ac9ed70e00cb78da", "scanner": "scanner-primary", "fingerprint": "edd3df684910a1a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8af6a8f8bc38be9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/estimate-tools.js:79"}, "properties": {"repobilityId": "dc16ad32a7998de6", "scanner": "scanner-primary", "fingerprint": "e8af6a8f8bc38be9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83b0ed0521b5f9ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/intelligence-bar/schedule-tools.js:685"}, "properties": {"repobilityId": "13a2a027eeb487df", "scanner": "scanner-primary", "fingerprint": "83b0ed0521b5f9ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30adf9e4a2fc8772", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/intelligence-bar/review-tools.js:389"}, "properties": {"repobilityId": "e9b1e94645fa007f", "scanner": "scanner-primary", "fingerprint": "30adf9e4a2fc8772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dfe9cc2f30e277d", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/intelligence-bar/dashboard-tools.js:244"}, "properties": {"repobilityId": "c882a72f8eb59141", "scanner": "scanner-primary", "fingerprint": "3dfe9cc2f30e277d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cd62763cf29f43b", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/intelligence-bar/comms-tools.js:442"}, "properties": {"repobilityId": "0a00bf1f20b11c10", "scanner": "scanner-primary", "fingerprint": "1cd62763cf29f43b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bdd93bcc8052af2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pest-pressure/customer-view.js:19"}, "properties": {"repobilityId": "2b0c3410596d3eed", "scanner": "scanner-primary", "fingerprint": "bdd93bcc8052af2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5464100d26f975d", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/pest-pressure/store.js:17"}, "properties": {"repobilityId": "f8145b770237ca93", "scanner": "scanner-primary", "fingerprint": "e5464100d26f975d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e0bbcc27cb3f832", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/pest-pressure/config.js:11"}, "properties": {"repobilityId": "31ab5aaee5459fcb", "scanner": "scanner-primary", "fingerprint": "5e0bbcc27cb3f832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62d98a263750873d", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/pest-pressure/orchestrate.js:85"}, "properties": {"repobilityId": "24dd29099136cfa3", "scanner": "scanner-primary", "fingerprint": "62d98a263750873d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e00f84b2e948cca", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/pest-pressure/review-window.js:35"}, "properties": {"repobilityId": "86d170be7a3ad6da", "scanner": "scanner-primary", "fingerprint": "0e00f84b2e948cca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb62356f2908e6c2", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/pest-pressure/components/recurring-issue.js:53"}, "properties": {"repobilityId": "27e3a1ab097842d9", "scanner": "scanner-primary", "fingerprint": "bb62356f2908e6c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b1c7a6ddce44cc6", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/eval/incident-regression.js:44"}, "properties": {"repobilityId": "74368bbb9ba59325", "scanner": "scanner-primary", "fingerprint": "5b1c7a6ddce44cc6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5f8bd748e42d9db", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/messaging/providers/twilio-sms.js:91"}, "properties": {"repobilityId": "0977b12470eeb3f8", "scanner": "scanner-primary", "fingerprint": "c5f8bd748e42d9db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6649997cd5bd922", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/messaging/validators/consent.js:35"}, "properties": {"repobilityId": "e99287874e81eaab", "scanner": "scanner-primary", "fingerprint": "b6649997cd5bd922", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9236129e1738009", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/uniqueness-gate.js:317"}, "properties": {"repobilityId": "17a7caa4bd354249", "scanner": "scanner-primary", "fingerprint": "c9236129e1738009", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a647713f3df8be01", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/content/decision-router.js:54"}, "properties": {"repobilityId": "010041aaee046518", "scanner": "scanner-primary", "fingerprint": "a647713f3df8be01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06c6fe6104ac649", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/content-agent.js:29"}, "properties": {"repobilityId": "7a590a24d2466099", "scanner": "scanner-primary", "fingerprint": "f06c6fe6104ac649", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4fcf2faa802065e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/intercept-brief-seeder.js:84"}, "properties": {"repobilityId": "4559c5192f347fbd", "scanner": "scanner-primary", "fingerprint": "4fcf2faa802065e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7edad0074252e362", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/scoring-config.js:21"}, "properties": {"repobilityId": "cd1b0dc7a43114bd", "scanner": "scanner-primary", "fingerprint": "7edad0074252e362", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e034800c71b97f14", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/blog-writer.js:13"}, "properties": {"repobilityId": "bb9f69ebed54bd38", "scanner": "scanner-primary", "fingerprint": "e034800c71b97f14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e29707df8cd75d06", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/protected-pages.js:30"}, "properties": {"repobilityId": "5b46736a99a77edd", "scanner": "scanner-primary", "fingerprint": "e29707df8cd75d06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e88b44b796302fca", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/content/content-brief-builder.js:159"}, "properties": {"repobilityId": "28134b3d431e9ac9", "scanner": "scanner-primary", "fingerprint": "e88b44b796302fca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5832951b75d4a11", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/content/autonomous-runner.js:42"}, "properties": {"repobilityId": "b49853beb58a55ca", "scanner": "scanner-primary", "fingerprint": "b5832951b75d4a11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c71c553ab5047619", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/post-publish-visibility-worker.js:181"}, "properties": {"repobilityId": "a10b9d7ca5417082", "scanner": "scanner-primary", "fingerprint": "c71c553ab5047619", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e268cccb469dcd7", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/autonomous-pr-poller.js:310"}, "properties": {"repobilityId": "1523380d80d2d744", "scanner": "scanner-primary", "fingerprint": "6e268cccb469dcd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ef4aa0883287279", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/content/opportunity-queue.js:151"}, "properties": {"repobilityId": "3bb788b16aec5f3a", "scanner": "scanner-primary", "fingerprint": "0ef4aa0883287279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0507c0b8c3956ced", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/pii-redactor.js:72"}, "properties": {"repobilityId": "f6ecd70363a52419", "scanner": "scanner-primary", "fingerprint": "0507c0b8c3956ced", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0349ea93c230ed91", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/content-guardrails.js:80"}, "properties": {"repobilityId": "def49838d2d7ef9b", "scanner": "scanner-primary", "fingerprint": "0349ea93c230ed91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6022d848ea7b5f72", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/claims-ledger-validator.js:213"}, "properties": {"repobilityId": "89b40030aa61d5f8", "scanner": "scanner-primary", "fingerprint": "6022d848ea7b5f72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62004f1e6b09385e", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/content/seo-completion-gate.js:211"}, "properties": {"repobilityId": "a8e6db22c5140050", "scanner": "scanner-primary", "fingerprint": "62004f1e6b09385e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e80a1a8fb3d9f07", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/content/spoke-seed-seeder.js:72"}, "properties": {"repobilityId": "32326106ef5ecf89", "scanner": "scanner-primary", "fingerprint": "3e80a1a8fb3d9f07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07c5b2be17a33899", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/internal-link-pr-executor.js:228"}, "properties": {"repobilityId": "dab633da676b5129", "scanner": "scanner-primary", "fingerprint": "07c5b2be17a33899", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b5b0f315d2281ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/internal-link-pr-executor.js:1054"}, "properties": {"repobilityId": "782f0015267cda77", "scanner": "scanner-primary", "fingerprint": "6b5b0f315d2281ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07265e73665cd993", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/content/content-quality-gate.js:38"}, "properties": {"repobilityId": "411d45afa03e5e2c", "scanner": "scanner-primary", "fingerprint": "07265e73665cd993", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6325b6e9201b698e", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/customer-insights-miner.js:231"}, "properties": {"repobilityId": "bb5bc34cedf3d20b", "scanner": "scanner-primary", "fingerprint": "6325b6e9201b698e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0baaf79b54b76285", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/fact-check-gate.js:123"}, "properties": {"repobilityId": "7937830df90717a6", "scanner": "scanner-primary", "fingerprint": "0baaf79b54b76285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eb14c90d6e9d932", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/content/agents/brief-driven-tools.js:250"}, "properties": {"repobilityId": "50a867c9264e413c", "scanner": "scanner-primary", "fingerprint": "4eb14c90d6e9d932", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-340b51c051f5153b", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/content/agents/agent-dispatcher.js:101"}, "properties": {"repobilityId": "68fd374beb3ee7b9", "scanner": "scanner-primary", "fingerprint": "340b51c051f5153b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5338ab27ce23fd3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/content/agents/agent-dispatcher.js:136"}, "properties": {"repobilityId": "c8a6d40d8c395fe9", "scanner": "scanner-primary", "fingerprint": "e5338ab27ce23fd3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d4c2e4f1eb52679", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/content/agents/writer-agent-config.js:30"}, "properties": {"repobilityId": "155a75439210650a", "scanner": "scanner-primary", "fingerprint": "6d4c2e4f1eb52679", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd93ea26c39e450f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/address-validation/index.js:75"}, "properties": {"repobilityId": "26e1d681103242ee", "scanner": "scanner-primary", "fingerprint": "fd93ea26c39e450f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2aee1678cb4fe50", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/address-validation/index.js:62"}, "properties": {"repobilityId": "893ae3772e493c7c", "scanner": "scanner-primary", "fingerprint": "d2aee1678cb4fe50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3246ba9f935e17da", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/scheduling/find-time.js:133"}, "properties": {"repobilityId": "921c5d2083137d4d", "scanner": "scanner-primary", "fingerprint": "3246ba9f935e17da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebbea396f8082f81", "level": "none", "message": {"text": "Commented-code block (10 lines) in server/services/pdf/wdo-report-pdf.js:119"}, "properties": {"repobilityId": "502bbdadf0397b10", "scanner": "scanner-primary", "fingerprint": "ebbea396f8082f81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e20634f2b10de9b5", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/customer-intelligence/health-scorer.js:105"}, "properties": {"repobilityId": "a03c8d8454f70a74", "scanner": "scanner-primary", "fingerprint": "e20634f2b10de9b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f479cb354310948", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/backlink-agent/x-poller.js:25"}, "properties": {"repobilityId": "0f9eabd777cb56ac", "scanner": "scanner-primary", "fingerprint": "5f479cb354310948", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a5ca47814d08e27", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-outreach.js:111"}, "properties": {"repobilityId": "d0949cccf19a31ec", "scanner": "scanner-primary", "fingerprint": "6a5ca47814d08e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9b65b38dae11b2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/indexnow-submit.js:43"}, "properties": {"repobilityId": "34bb6a96c92cc98e", "scanner": "scanner-primary", "fingerprint": "d9b65b38dae11b2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce2ca9041e56192d", "level": "none", "message": {"text": "Commented-code block (6 lines) in server/services/seo/site-rollup.js:6"}, "properties": {"repobilityId": "35ee6d44253a5c40", "scanner": "scanner-primary", "fingerprint": "ce2ca9041e56192d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5594ee3b1924863f", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-verifier.js:119"}, "properties": {"repobilityId": "1e4d98de739285ef", "scanner": "scanner-primary", "fingerprint": "5594ee3b1924863f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb460115f654f85a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/link-prospect-verifier.js:222"}, "properties": {"repobilityId": "5bd7a944f83f7484", "scanner": "scanner-primary", "fingerprint": "eb460115f654f85a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8410eb64e737d705", "level": "none", "message": {"text": "Commented-code block (9 lines) in server/services/seo/gsc-opportunity-miner.js:101"}, "properties": {"repobilityId": "523646fe9c113edd", "scanner": "scanner-primary", "fingerprint": "8410eb64e737d705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55583203734cfcfb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server/services/seo/backlink-strategy-agent.js:63"}, "properties": {"repobilityId": "56dd6190989f1cb0", "scanner": "scanner-primary", "fingerprint": "55583203734cfcfb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81d58beefed4e927", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/link-prospect-worker.js:19"}, "properties": {"repobilityId": "f3fb016eaa324365", "scanner": "scanner-primary", "fingerprint": "81d58beefed4e927", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfc5b37195dc18a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/llm-mention-prober.js:190"}, "properties": {"repobilityId": "799b6289eea63dfc", "scanner": "scanner-primary", "fingerprint": "cfc5b37195dc18a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e6dce36a422eaf6", "level": "none", "message": {"text": "Commented-code block (8 lines) in server/services/seo/competitor-gap-miner.js:155"}, "properties": {"repobilityId": "933ba83255fecfaf", "scanner": "scanner-primary", "fingerprint": "3e6dce36a422eaf6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1fefead7fb68e073", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/serp-profiler.js:26"}, "properties": {"repobilityId": "b28ae0bca3a32641", "scanner": "scanner-primary", "fingerprint": "1fefead7fb68e073", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a46cadb58f48e493", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/rankings-monitor.js:98"}, "properties": {"repobilityId": "fee3de1090624328", "scanner": "scanner-primary", "fingerprint": "a46cadb58f48e493", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d53c350a41e0c1b", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/seo/dataforseo.js:145"}, "properties": {"repobilityId": "22b228d03ad3e0f9", "scanner": "scanner-primary", "fingerprint": "0d53c350a41e0c1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21d31af6a6c757c3", "level": "none", "message": {"text": "Commented-code block (7 lines) in server/services/seo/conversion-feedback-miner.js:105"}, "properties": {"repobilityId": "b3c23f35fb84088f", "scanner": "scanner-primary", "fingerprint": "21d31af6a6c757c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d614020f855b3b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in server/services/seo/impact-tracker.js:444"}, "properties": {"repobilityId": "3d8ff0e63c27cade", "scanner": "scanner-primary", "fingerprint": "8d614020f855b3b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5003e040cfda7e09", "level": "note", "message": {"text": "340 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "decd19a7fedf4ea6", "scanner": "scanner-primary", "fingerprint": "5003e040cfda7e09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-a20844997635e700", "level": "warning", "message": {"text": "Frontend route `/onboard/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "cd8c1bbeab5f94bb", "scanner": "scanner-primary", "fingerprint": "a20844997635e700", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0e30c6fa69c578f7", "level": "warning", "message": {"text": "Frontend route `/rate/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "e2b2cc0107b328b3", "scanner": "scanner-primary", "fingerprint": "0e30c6fa69c578f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a075160626cb0ff2", "level": "warning", "message": {"text": "Frontend route `/report/project/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "c833d00e1661cd2c", "scanner": "scanner-primary", "fingerprint": "a075160626cb0ff2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3384dd822f8380c9", "level": "warning", "message": {"text": "Frontend route `/report/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "598fe9137be8fdac", "scanner": "scanner-primary", "fingerprint": "3384dd822f8380c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bd7a53e338618c44", "level": "warning", "message": {"text": "Frontend route `/pay/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "8ab6d67e435f4127", "scanner": "scanner-primary", "fingerprint": "bd7a53e338618c44", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-aaa38310fd067131", "level": "warning", "message": {"text": "Frontend route `/receipt/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "530b2043e12fd433", "scanner": "scanner-primary", "fingerprint": "aaa38310fd067131", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ad685e9e5b2215c6", "level": "warning", "message": {"text": "Frontend route `/contract/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "ec1372cc5a2521de", "scanner": "scanner-primary", "fingerprint": "ad685e9e5b2215c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1934bf84ea70abb1", "level": "warning", "message": {"text": "Frontend route `/track/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "9815bd5cce9d75c4", "scanner": "scanner-primary", "fingerprint": "1934bf84ea70abb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e161569846e0d554", "level": "warning", "message": {"text": "Frontend route `/prep/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "e25c3499cf19051f", "scanner": "scanner-primary", "fingerprint": "e161569846e0d554", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4c5077ec9ad74d7c", "level": "warning", "message": {"text": "Frontend route `/track-preview` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "9010799f6f4cc5db", "scanner": "scanner-primary", "fingerprint": "4c5077ec9ad74d7c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3d467619ec1bf956", "level": "warning", "message": {"text": "Frontend route `/estimate/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "a43a6301e930107b", "scanner": "scanner-primary", "fingerprint": "3d467619ec1bf956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a62f6273c2fd342", "level": "warning", "message": {"text": "Frontend route `/lawn-care/what-is-included` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "78c35b76a7c1d55d", "scanner": "scanner-primary", "fingerprint": "6a62f6273c2fd342", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d2a13cdde7c9bcb7", "level": "warning", "message": {"text": "Frontend route `/service-outlines/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "694df49c01346e67", "scanner": "scanner-primary", "fingerprint": "d2a13cdde7c9bcb7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6a7e2b7e099300e9", "level": "warning", "message": {"text": "Frontend route `/review/:token` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "d2b690185624fb6b", "scanner": "scanner-primary", "fingerprint": "6a7e2b7e099300e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0ba5f8353dcc8c98", "level": "warning", "message": {"text": "Frontend route `/book` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "bd96ebceb602c44e", "scanner": "scanner-primary", "fingerprint": "0ba5f8353dcc8c98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-23f3dfae79bdbbb6", "level": "warning", "message": {"text": "Frontend route `/newsletter/archive/:id` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "eb89bb07ab1f0a7b", "scanner": "scanner-primary", "fingerprint": "23f3dfae79bdbbb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1d3f0c420e719a7d", "level": "warning", "message": {"text": "Frontend route `/button-examples` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "8cd01c836049e2c5", "scanner": "scanner-primary", "fingerprint": "1d3f0c420e719a7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a5d8635fba29b7ca", "level": "warning", "message": {"text": "Frontend route `/book/:estimateToken` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "081d4130eff9b197", "scanner": "scanner-primary", "fingerprint": "a5d8635fba29b7ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a36cd0f1e1d12886", "level": "warning", "message": {"text": "Frontend route `estimate` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "6a30906c1150f2db", "scanner": "scanner-primary", "fingerprint": "a36cd0f1e1d12886", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ac82cf918e4db530", "level": "warning", "message": {"text": "Frontend route `protocols` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "2065535fc9323bc8", "scanner": "scanner-primary", "fingerprint": "ac82cf918e4db530", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2ba655b0243196cd", "level": "warning", "message": {"text": "Frontend route `customers` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "9fa2c71abd5b7c91", "scanner": "scanner-primary", "fingerprint": "2ba655b0243196cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c18b17a219941ad0", "level": "warning", "message": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "89cbc2b282d1cca2", "scanner": "scanner-primary", "fingerprint": "c18b17a219941ad0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3a970542b8e76ed4", "level": "warning", "message": {"text": "Frontend route `estimates` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "80b231c5928698a4", "scanner": "scanner-primary", "fingerprint": "3a970542b8e76ed4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-376b48947c4d0268", "level": "warning", "message": {"text": "Frontend route `dispatch` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "550c374f239e18cd", "scanner": "scanner-primary", "fingerprint": "376b48947c4d0268", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ce54dd27af70a7a6", "level": "warning", "message": {"text": "Frontend route `schedule` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "25b9639e9e893f42", "scanner": "scanner-primary", "fingerprint": "ce54dd27af70a7a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-14f1acc15ad968d4", "level": "warning", "message": {"text": "Frontend route `revenue` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "6c31c9c0bee8ca6f", "scanner": "scanner-primary", "fingerprint": "14f1acc15ad968d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9a51aab157481ee5", "level": "warning", "message": {"text": "Frontend route `communications` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "3ee44337e9fc02ec", "scanner": "scanner-primary", "fingerprint": "9a51aab157481ee5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c4e80d302e01cf6a", "level": "warning", "message": {"text": "Frontend route `reviews` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "002a98785823f782", "scanner": "scanner-primary", "fingerprint": "c4e80d302e01cf6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-88577523852eae7b", "level": "warning", "message": {"text": "Frontend route `requests` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "6f88ed2a7ed0d20d", "scanner": "scanner-primary", "fingerprint": "88577523852eae7b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3aa89a52ad28632f", "level": "warning", "message": {"text": "Frontend route `ads` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "d7e5f4b3223d1a32", "scanner": "scanner-primary", "fingerprint": "3aa89a52ad28632f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6424b2a7fae34f7d", "level": "warning", "message": {"text": "Frontend route `ppc` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "e67ed047ad09ce07", "scanner": "scanner-primary", "fingerprint": "6424b2a7fae34f7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ba6dbc2c3c0a25dc", "level": "warning", "message": {"text": "Frontend route `seo` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "27de367bfd60a3af", "scanner": "scanner-primary", "fingerprint": "ba6dbc2c3c0a25dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0cefd113844441d5", "level": "warning", "message": {"text": "Frontend route `content-engine` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "98d83f8f155239ff", "scanner": "scanner-primary", "fingerprint": "0cefd113844441d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bad3218b476221d6", "level": "warning", "message": {"text": "Frontend route `content-registry` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "fba75998bd33f83e", "scanner": "scanner-primary", "fingerprint": "bad3218b476221d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8a96c47ea07346f7", "level": "warning", "message": {"text": "Frontend route `data-hygiene` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "b80293bb92984643", "scanner": "scanner-primary", "fingerprint": "8a96c47ea07346f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d4b72521233a335b", "level": "warning", "message": {"text": "Frontend route `agents` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "cf7022df8e16b397", "scanner": "scanner-primary", "fingerprint": "d4b72521233a335b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-533b2e91eca2434f", "level": "warning", "message": {"text": "Frontend route `agent-decisions` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "1e1ef628777c4384", "scanner": "scanner-primary", "fingerprint": "533b2e91eca2434f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7f3b65a652f06732", "level": "warning", "message": {"text": "Frontend route `blog` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "1454d75d163045eb", "scanner": "scanner-primary", "fingerprint": "7f3b65a652f06732", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a8dc02b39b2f3a8c", "level": "warning", "message": {"text": "Frontend route `knowledge` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "2167c59160ca042d", "scanner": "scanner-primary", "fingerprint": "a8dc02b39b2f3a8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b442479d16727a39", "level": "warning", "message": {"text": "Frontend route `referrals` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "93cac5d999a70cd4", "scanner": "scanner-primary", "fingerprint": "b442479d16727a39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bf3a571a5cde8fd2", "level": "warning", "message": {"text": "Frontend route `social-media` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "53e9354bd0e0022a", "scanner": "scanner-primary", "fingerprint": "bf3a571a5cde8fd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f084a579e5f85a15", "level": "warning", "message": {"text": "Frontend route `tax` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "8ca558be81e8f3fb", "scanner": "scanner-primary", "fingerprint": "f084a579e5f85a15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b06d7d6cc11dc9cd", "level": "warning", "message": {"text": "Frontend route `pricing` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "2ea81598a6d9afe6", "scanner": "scanner-primary", "fingerprint": "b06d7d6cc11dc9cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-300b1517d0b1a91b", "level": "warning", "message": {"text": "Frontend route `lawn-assessment` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "90fdea557c611be3", "scanner": "scanner-primary", "fingerprint": "300b1517d0b1a91b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b47919ce5f3d5381", "level": "warning", "message": {"text": "Frontend route `lawn-protocol` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "50537d949617e662", "scanner": "scanner-primary", "fingerprint": "b47919ce5f3d5381", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ca5fde8abf9049bc", "level": "warning", "message": {"text": "Frontend route `turf-height` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "57bb5003bb26fd91", "scanner": "scanner-primary", "fingerprint": "ca5fde8abf9049bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2e1d135741ef42e4", "level": "warning", "message": {"text": "Frontend route `equipment-calibration` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "2910ff2ef8d333b1", "scanner": "scanner-primary", "fingerprint": "2e1d135741ef42e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1da5b82f26d655a7", "level": "warning", "message": {"text": "Frontend route `equipment` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "2ba8524ecb3e1f00", "scanner": "scanner-primary", "fingerprint": "1da5b82f26d655a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5e670cb24c2076c4", "level": "warning", "message": {"text": "Frontend route `kb` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "acdbf8fde28cf0d3", "scanner": "scanner-primary", "fingerprint": "5e670cb24c2076c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fce8c3fad90ea40a", "level": "warning", "message": {"text": "Frontend route `invoices` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "0039ffeaaaba27db", "scanner": "scanner-primary", "fingerprint": "fce8c3fad90ea40a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bc1ea30e962d4c47", "level": "warning", "message": {"text": "Frontend route `inventory` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "07b89be78ba711d8", "scanner": "scanner-primary", "fingerprint": "bc1ea30e962d4c47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8fb5614785246b69", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "e6df78717c518af8", "scanner": "scanner-primary", "fingerprint": "8fb5614785246b69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1bd7a3b223656741", "level": "warning", "message": {"text": "Frontend route `settings/pest-pressure` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "cb32e726c6d64f0f", "scanner": "scanner-primary", "fingerprint": "1bd7a3b223656741", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f0c510b6ba3ff4ef", "level": "warning", "message": {"text": "Frontend route `health` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "180ac6222434628d", "scanner": "scanner-primary", "fingerprint": "f0c510b6ba3ff4ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c6c4191cedbe5f05", "level": "warning", "message": {"text": "Frontend route `timetracking` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "b01649791f60bc70", "scanner": "scanner-primary", "fingerprint": "c6c4191cedbe5f05", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7006061838cdfe11", "level": "warning", "message": {"text": "Frontend route `leads` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "7322d7902ea788ff", "scanner": "scanner-primary", "fingerprint": "7006061838cdfe11", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f1cd96e968004f2a", "level": "warning", "message": {"text": "Frontend route `fleet` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "c63bb9934b8a0752", "scanner": "scanner-primary", "fingerprint": "f1cd96e968004f2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-9b0a39e3e4a032cb", "level": "warning", "message": {"text": "Frontend route `service-library` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "5240fba6105e9152", "scanner": "scanner-primary", "fingerprint": "9b0a39e3e4a032cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f2cdc769ee76bd87", "level": "warning", "message": {"text": "Frontend route `projects` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "cc74ae4aa4bbe146", "scanner": "scanner-primary", "fingerprint": "f2cdc769ee76bd87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fd5916c195142bdb", "level": "warning", "message": {"text": "Frontend route `documents` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "b2f09141f2570f78", "scanner": "scanner-primary", "fingerprint": "fd5916c195142bdb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cca8f1485640ba8f", "level": "warning", "message": {"text": "Frontend route `document-requests` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "85d5f422eded0c30", "scanner": "scanner-primary", "fingerprint": "cca8f1485640ba8f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2f2a2f9f42c276e6", "level": "warning", "message": {"text": "Frontend route `discounts` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "b12ec4f72fe2b424", "scanner": "scanner-primary", "fingerprint": "2f2a2f9f42c276e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f97299244239983f", "level": "warning", "message": {"text": "Frontend route `compliance` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "fa487a25b23099c5", "scanner": "scanner-primary", "fingerprint": "f97299244239983f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-48552bae8ac1eb69", "level": "warning", "message": {"text": "Frontend route `credentials` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "94e067e640dffdf2", "scanner": "scanner-primary", "fingerprint": "48552bae8ac1eb69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-d278bc81331404d3", "level": "warning", "message": {"text": "Frontend route `newsletter` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "3b7b437361c3953b", "scanner": "scanner-primary", "fingerprint": "d278bc81331404d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a042a7ea2017ea45", "level": "warning", "message": {"text": "Frontend route `call-recordings` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "176c88cb00c3da2b", "scanner": "scanner-primary", "fingerprint": "a042a7ea2017ea45", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-961255478250f03a", "level": "warning", "message": {"text": "Frontend route `phone-numbers` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "7ce9ca20658495d3", "scanner": "scanner-primary", "fingerprint": "961255478250f03a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-0a7b1464c4396338", "level": "warning", "message": {"text": "Frontend route `banking` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "279f03ac100ae127", "scanner": "scanner-primary", "fingerprint": "0a7b1464c4396338", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6920456b40604874", "level": "warning", "message": {"text": "Frontend route `pricing-logic` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "685932279c026a1a", "scanner": "scanner-primary", "fingerprint": "6920456b40604874", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ff9fe2f78ba83b4e", "level": "warning", "message": {"text": "Frontend route `pricing-reality-check` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "8dd3b00df3fa0e49", "scanner": "scanner-primary", "fingerprint": "ff9fe2f78ba83b4e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cc122229c017738a", "level": "warning", "message": {"text": "Frontend route `tool-health` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "1e938f1b07b181cc", "scanner": "scanner-primary", "fingerprint": "cc122229c017738a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-25dc4d8552eead0b", "level": "warning", "message": {"text": "Frontend route `more` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "088e48d266b91f30", "scanner": "scanner-primary", "fingerprint": "25dc4d8552eead0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-58a700c8ff543587", "level": "warning", "message": {"text": "Frontend route `_design-system` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "f60890365b809b59", "scanner": "scanner-primary", "fingerprint": "58a700c8ff543587", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e48fe64a81a231b3", "level": "warning", "message": {"text": "Frontend route `_design-system/flags` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "a1d6d197d6a37c3b", "scanner": "scanner-primary", "fingerprint": "e48fe64a81a231b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-abfc64104117e48e", "level": "warning", "message": {"text": "Frontend route `/*` has no Link/navigate to it \u2014 client/src/App.jsx"}, "properties": {"repobilityId": "41e8d560159bda8c", "scanner": "scanner-primary", "fingerprint": "abfc64104117e48e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-235052e8faeeff03", "level": "error", "message": {"text": "Dangling fetch: POST /auth/send-code (client/src/utils/api.js:119)"}, "properties": {"repobilityId": "e9f0a09b2704e7c2", "scanner": "scanner-primary", "fingerprint": "235052e8faeeff03", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d85bee05b80d684e", "level": "error", "message": {"text": "Dangling fetch: POST /auth/verify-code (client/src/utils/api.js:126)"}, "properties": {"repobilityId": "2097c327d29cc5a4", "scanner": "scanner-primary", "fingerprint": "d85bee05b80d684e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3258a00957027797", "level": "error", "message": {"text": "Dangling fetch: GET /auth/me (client/src/utils/api.js:133)"}, "properties": {"repobilityId": "c6c34b3ecab3b0db", "scanner": "scanner-primary", "fingerprint": "3258a00957027797", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-457e5b1aa2f7e5a2", "level": "error", "message": {"text": "Dangling fetch: GET /auth/properties (client/src/utils/api.js:137)"}, "properties": {"repobilityId": "e7e9565d84d9c665", "scanner": "scanner-primary", "fingerprint": "457e5b1aa2f7e5a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-044cf94690e0bf37", "level": "error", "message": {"text": "Dangling fetch: POST /auth/select-property (client/src/utils/api.js:141)"}, "properties": {"repobilityId": "e170a5888155c7f3", "scanner": "scanner-primary", "fingerprint": "044cf94690e0bf37", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-12fb32878b344e7d", "level": "error", "message": {"text": "Dangling fetch: GET /services?${query} (client/src/utils/api.js:150)"}, "properties": {"repobilityId": "d9522a78b321ae3e", "scanner": "scanner-primary", "fingerprint": "12fb32878b344e7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2863f2f35aba1d49", "level": "error", "message": {"text": "Dangling fetch: GET /services/${id} (client/src/utils/api.js:154)"}, "properties": {"repobilityId": "16f6746eea82cb18", "scanner": "scanner-primary", "fingerprint": "2863f2f35aba1d49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-baaf163792c3b038", "level": "error", "message": {"text": "Dangling fetch: GET /services/stats/summary (client/src/utils/api.js:158)"}, "properties": {"repobilityId": "55ffa31d04660890", "scanner": "scanner-primary", "fingerprint": "baaf163792c3b038", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d83ac58076f97bca", "level": "error", "message": {"text": "Dangling fetch: GET /schedule?days=${days} (client/src/utils/api.js:163)"}, "properties": {"repobilityId": "66435d1b92e7327f", "scanner": "scanner-primary", "fingerprint": "d83ac58076f97bca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fdde3042fd90b851", "level": "error", "message": {"text": "Dangling fetch: GET /schedule/next (client/src/utils/api.js:167)"}, "properties": {"repobilityId": "20096e372db9c805", "scanner": "scanner-primary", "fingerprint": "fdde3042fd90b851", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b281e93be6738e22", "level": "error", "message": {"text": "Dangling fetch: POST /schedule/${id}/confirm (client/src/utils/api.js:171)"}, "properties": {"repobilityId": "3fed0b7111936c55", "scanner": "scanner-primary", "fingerprint": "b281e93be6738e22", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-48c1bba669306b81", "level": "error", "message": {"text": "Dangling fetch: POST /schedule/${id}/reschedule (client/src/utils/api.js:175)"}, "properties": {"repobilityId": "7cd302c1bbd1cab9", "scanner": "scanner-primary", "fingerprint": "48c1bba669306b81", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-939cd6c3a4d4c2a2", "level": "error", "message": {"text": "Dangling fetch: GET /billing?limit=${limit} (client/src/utils/api.js:183)"}, "properties": {"repobilityId": "cde62551f089f4f1", "scanner": "scanner-primary", "fingerprint": "939cd6c3a4d4c2a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a9689528a9ea1076", "level": "error", "message": {"text": "Dangling fetch: GET /billing/balance (client/src/utils/api.js:187)"}, "properties": {"repobilityId": "d37b804b22a3f8b9", "scanner": "scanner-primary", "fingerprint": "a9689528a9ea1076", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1c0c235f7447e65e", "level": "error", "message": {"text": "Dangling fetch: GET /billing/cards (client/src/utils/api.js:191)"}, "properties": {"repobilityId": "0f9be35b147c3676", "scanner": "scanner-primary", "fingerprint": "1c0c235f7447e65e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1b047633b496a67b", "level": "error", "message": {"text": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:195)"}, "properties": {"repobilityId": "3f3b4973467c5c08", "scanner": "scanner-primary", "fingerprint": "1b047633b496a67b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4429c2d1624f4867", "level": "error", "message": {"text": "Dangling fetch: GET /billing/processor (client/src/utils/api.js:202)"}, "properties": {"repobilityId": "e1b987fdca644a72", "scanner": "scanner-primary", "fingerprint": "4429c2d1624f4867", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-17461c85df83f824", "level": "error", "message": {"text": "Dangling fetch: POST /billing/cards/setup-intent (client/src/utils/api.js:206)"}, "properties": {"repobilityId": "58007594547ff02d", "scanner": "scanner-primary", "fingerprint": "17461c85df83f824", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-245fcfe3d6e0966e", "level": "error", "message": {"text": "Dangling fetch: POST /billing/cards (client/src/utils/api.js:213)"}, "properties": {"repobilityId": "7c65050410bc854a", "scanner": "scanner-primary", "fingerprint": "245fcfe3d6e0966e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a17da5f3450815b5", "level": "error", "message": {"text": "Dangling fetch: DELETE /billing/cards/${cardId} (client/src/utils/api.js:220)"}, "properties": {"repobilityId": "cdd0fdc184492494", "scanner": "scanner-primary", "fingerprint": "a17da5f3450815b5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-03cdfaef8fc69d2a", "level": "error", "message": {"text": "Dangling fetch: PUT /billing/cards/${cardId}/default (client/src/utils/api.js:224)"}, "properties": {"repobilityId": "392f1ef341240007", "scanner": "scanner-primary", "fingerprint": "03cdfaef8fc69d2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e85c6e582322614a", "level": "error", "message": {"text": "Dangling fetch: GET /billing/autopay (client/src/utils/api.js:229)"}, "properties": {"repobilityId": "da7d0571836778df", "scanner": "scanner-primary", "fingerprint": "e85c6e582322614a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-eba96f2f6728efcc", "level": "error", "message": {"text": "Dangling fetch: PUT /billing/autopay (client/src/utils/api.js:233)"}, "properties": {"repobilityId": "f48f232c4e4c31ae", "scanner": "scanner-primary", "fingerprint": "eba96f2f6728efcc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6951b5937df9a20f", "level": "error", "message": {"text": "Dangling fetch: POST /billing/autopay/pause (client/src/utils/api.js:240)"}, "properties": {"repobilityId": "f6351e8fe017df9b", "scanner": "scanner-primary", "fingerprint": "6951b5937df9a20f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0aba411a569c3849", "level": "error", "message": {"text": "Dangling fetch: POST /billing/autopay/resume (client/src/utils/api.js:247)"}, "properties": {"repobilityId": "d0cf9a66ec880c40", "scanner": "scanner-primary", "fingerprint": "0aba411a569c3849", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f481643552b0905e", "level": "error", "message": {"text": "Dangling fetch: GET /notifications/preferences (client/src/utils/api.js:252)"}, "properties": {"repobilityId": "fc5ffd46ee17dc61", "scanner": "scanner-primary", "fingerprint": "f481643552b0905e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8fb7883a5f7d2b8c", "level": "error", "message": {"text": "Dangling fetch: PUT /notifications/preferences (client/src/utils/api.js:256)"}, "properties": {"repobilityId": "c940a61001a1fcf4", "scanner": "scanner-primary", "fingerprint": "8fb7883a5f7d2b8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6b742c6d65e0c8fd", "level": "error", "message": {"text": "Dangling fetch: GET /notifications/property-preferences (client/src/utils/api.js:263)"}, "properties": {"repobilityId": "3a8f22b8148ab638", "scanner": "scanner-primary", "fingerprint": "6b742c6d65e0c8fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ce41a12171796300", "level": "error", "message": {"text": "Dangling fetch: PUT /notifications/property-preferences/${customerId} (client/src/utils/api.js:267)"}, "properties": {"repobilityId": "4c24cff5c661075c", "scanner": "scanner-primary", "fingerprint": "ce41a12171796300", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4613efcb55552a8a", "level": "error", "message": {"text": "Dangling fetch: POST /customer-pricing/query (client/src/utils/api.js:286)"}, "properties": {"repobilityId": "60f7d89caa147c98", "scanner": "scanner-primary", "fingerprint": "4613efcb55552a8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-36d949660d72cab8", "level": "error", "message": {"text": "Dangling fetch: GET /lawn-health/${customerId} (client/src/utils/api.js:294)"}, "properties": {"repobilityId": "e6216dde262065c9", "scanner": "scanner-primary", "fingerprint": "36d949660d72cab8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-00636014f8792bf2", "level": "error", "message": {"text": "Dangling fetch: GET /lawn-health/${customerId}/history (client/src/utils/api.js:298)"}, "properties": {"repobilityId": "832af94881cd9555", "scanner": "scanner-primary", "fingerprint": "00636014f8792bf2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e101fe969b1592d9", "level": "error", "message": {"text": "Dangling fetch: GET /lawn-health/${customerId}/photos/${assessmentId} (client/src/utils/api.js:302)"}, "properties": {"repobilityId": "3898c3ea6f822f3f", "scanner": "scanner-primary", "fingerprint": "e101fe969b1592d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-e99d2e5d620a732b", "level": "error", "message": {"text": "Dangling fetch: POST /lawn-health/${customerId}/recommendation-events (client/src/utils/api.js:306)"}, "properties": {"repobilityId": "e991208668826089", "scanner": "scanner-primary", "fingerprint": "e99d2e5d620a732b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-20d491eb2b013fa0", "level": "error", "message": {"text": "Dangling fetch: GET /feed/blog (client/src/utils/api.js:314)"}, "properties": {"repobilityId": "77839aa805de8535", "scanner": "scanner-primary", "fingerprint": "20d491eb2b013fa0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ebd2275d9897163d", "level": "error", "message": {"text": "Dangling fetch: GET /feed/newsletter (client/src/utils/api.js:318)"}, "properties": {"repobilityId": "8b3f2cb3010e29b0", "scanner": "scanner-primary", "fingerprint": "ebd2275d9897163d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37699d72586d1180", "level": "error", "message": {"text": "Dangling fetch: GET /feed/weather (client/src/utils/api.js:322)"}, "properties": {"repobilityId": "0cf7abc7d681c618", "scanner": "scanner-primary", "fingerprint": "37699d72586d1180", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a41eecde4d7ba620", "level": "error", "message": {"text": "Dangling fetch: GET /feed/alerts (client/src/utils/api.js:326)"}, "properties": {"repobilityId": "d5fbc501fd040686", "scanner": "scanner-primary", "fingerprint": "a41eecde4d7ba620", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6f9688e2d64cf1d0", "level": "error", "message": {"text": "Dangling fetch: GET /feed/experts (client/src/utils/api.js:330)"}, "properties": {"repobilityId": "d442ec2b306e9274", "scanner": "scanner-primary", "fingerprint": "6f9688e2d64cf1d0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a184b9d95533a90c", "level": "error", "message": {"text": "Dangling fetch: GET /feed/local (client/src/utils/api.js:334)"}, "properties": {"repobilityId": "503cb126ec4a5aa7", "scanner": "scanner-primary", "fingerprint": "a184b9d95533a90c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d55d726ad6d015af", "level": "error", "message": {"text": "Dangling fetch: GET /feed/faq (client/src/utils/api.js:338)"}, "properties": {"repobilityId": "aab05b411830fdd1", "scanner": "scanner-primary", "fingerprint": "d55d726ad6d015af", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3735d8f304ef0908", "level": "error", "message": {"text": "Dangling fetch: GET /feed/monthly-tip (client/src/utils/api.js:342)"}, "properties": {"repobilityId": "57680f57dcbefdd3", "scanner": "scanner-primary", "fingerprint": "3735d8f304ef0908", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3684cb31c275fe65", "level": "error", "message": {"text": "Dangling fetch: GET /satisfaction/pending (client/src/utils/api.js:347)"}, "properties": {"repobilityId": "e3db1090940ed08c", "scanner": "scanner-primary", "fingerprint": "3684cb31c275fe65", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-50564eb8fb412485", "level": "error", "message": {"text": "Dangling fetch: POST /satisfaction (client/src/utils/api.js:351)"}, "properties": {"repobilityId": "a871f01eb39fda32", "scanner": "scanner-primary", "fingerprint": "50564eb8fb412485", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4e2110c8509df5cf", "level": "error", "message": {"text": "Dangling fetch: GET /property/preferences (client/src/utils/api.js:359)"}, "properties": {"repobilityId": "8a33e9565e832616", "scanner": "scanner-primary", "fingerprint": "4e2110c8509df5cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7e47846e06a95f05", "level": "error", "message": {"text": "Dangling fetch: PUT /property/preferences (client/src/utils/api.js:363)"}, "properties": {"repobilityId": "86aa25caee3f92a8", "scanner": "scanner-primary", "fingerprint": "7e47846e06a95f05", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5f8f6699162cee6f", "level": "error", "message": {"text": "Dangling fetch: GET /service-preferences (client/src/utils/api.js:371)"}, "properties": {"repobilityId": "59208c8ce474e84f", "scanner": "scanner-primary", "fingerprint": "5f8f6699162cee6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ee9040e840ad1920", "level": "error", "message": {"text": "Dangling fetch: PUT /service-preferences (client/src/utils/api.js:375)"}, "properties": {"repobilityId": "f5423db8ceaa8e2c", "scanner": "scanner-primary", "fingerprint": "ee9040e840ad1920", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-acaf17bf5d06023e", "level": "error", "message": {"text": "Dangling fetch: GET /referrals (client/src/utils/api.js:383)"}, "properties": {"repobilityId": "feac54e193470ef8", "scanner": "scanner-primary", "fingerprint": "acaf17bf5d06023e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cf953acced6a4e51", "level": "error", "message": {"text": "Dangling fetch: GET /referrals/stats (client/src/utils/api.js:387)"}, "properties": {"repobilityId": "a3fd73c679f42c70", "scanner": "scanner-primary", "fingerprint": "cf953acced6a4e51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d9107b6466b780e5", "level": "error", "message": {"text": "Dangling fetch: POST /referrals (client/src/utils/api.js:391)"}, "properties": {"repobilityId": "c9573b5ffaaf4169", "scanner": "scanner-primary", "fingerprint": "d9107b6466b780e5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-baa4068b601c13e4", "level": "error", "message": {"text": "Dangling fetch: GET /promotions/relevant (client/src/utils/api.js:399)"}, "properties": {"repobilityId": "f49519c6d956f613", "scanner": "scanner-primary", "fingerprint": "baa4068b601c13e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-75fc657d714e5ad7", "level": "error", "message": {"text": "Dangling fetch: POST /promotions/${promoId}/interest (client/src/utils/api.js:403)"}, "properties": {"repobilityId": "5ce03e9e048e3620", "scanner": "scanner-primary", "fingerprint": "75fc657d714e5ad7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-50e57c817d916889", "level": "error", "message": {"text": "Dangling fetch: POST /promotions/${promoId}/dismiss (client/src/utils/api.js:410)"}, "properties": {"repobilityId": "989318197fd6cce9", "scanner": "scanner-primary", "fingerprint": "50e57c817d916889", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fec95c0d86fd44aa", "level": "error", "message": {"text": "Dangling fetch: POST /documents/share/${docId} (client/src/utils/api.js:423)"}, "properties": {"repobilityId": "6e3add8852ce2a36", "scanner": "scanner-primary", "fingerprint": "fec95c0d86fd44aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-ae63254c5ee83bc8", "level": "error", "message": {"text": "Dangling fetch: GET /badges (client/src/utils/api.js:428)"}, "properties": {"repobilityId": "14369e7cbfbadf95", "scanner": "scanner-primary", "fingerprint": "ae63254c5ee83bc8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dc661d5c04305e46", "level": "error", "message": {"text": "Dangling fetch: POST /badges/${badgeType}/notify (client/src/utils/api.js:432)"}, "properties": {"repobilityId": "bb5507a514411afa", "scanner": "scanner-primary", "fingerprint": "dc661d5c04305e46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-8d580e55bf2e175e", "level": "error", "message": {"text": "Dangling fetch: GET /tracking/active (client/src/utils/api.js:437)"}, "properties": {"repobilityId": "58475504c937c134", "scanner": "scanner-primary", "fingerprint": "8d580e55bf2e175e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5b7a7f0196540e87", "level": "error", "message": {"text": "Dangling fetch: GET /tracking/today (client/src/utils/api.js:441)"}, "properties": {"repobilityId": "a27ab87bb31085a4", "scanner": "scanner-primary", "fingerprint": "5b7a7f0196540e87", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-183433c3d8758326", "level": "error", "message": {"text": "Dangling fetch: GET /bouncie/vehicles (client/src/utils/api.js:446)"}, "properties": {"repobilityId": "afe1fc3e2c14208d", "scanner": "scanner-primary", "fingerprint": "183433c3d8758326", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6aae115484122732", "level": "error", "message": {"text": "Dangling fetch: GET /api/dispatch/insights?days=${d} (client/src/components/dispatch/InsightsPanelV2.jsx:24)"}, "properties": {"repobilityId": "c15ab92f7c0c1103", "scanner": "scanner-primary", "fingerprint": "6aae115484122732", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-526c43e8d5beae30", "level": "error", "message": {"text": "Dangling fetch: GET /api/dispatch/jobs?date=${date}&status=scheduled (client/src/components/dispatch/RevenuePanelV2.jsx:27)"}, "properties": {"repobilityId": "b5fa86207bd08758", "scanner": "scanner-primary", "fingerprint": "526c43e8d5beae30", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-54d72949b4e8ac25", "level": "error", "message": {"text": "Dangling fetch: POST /api/dispatch/csr/slots (client/src/components/dispatch/CSRPanelV2.jsx:33)"}, "properties": {"repobilityId": "de4482508557eb73", "scanner": "scanner-primary", "fingerprint": "54d72949b4e8ac25", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b1fafad4d698606d", "level": "error", "message": {"text": "Dangling fetch: POST /api/dispatch/match/simulate (client/src/components/dispatch/TechMatchPanelV2.jsx:41)"}, "properties": {"repobilityId": "945decbb1a724fa3", "scanner": "scanner-primary", "fingerprint": "b1fafad4d698606d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc00c7c88cba6297", "level": "error", "message": {"text": "Dangling fetch: GET /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:29)"}, "properties": {"repobilityId": "8fbda7bb7373f5b8", "scanner": "scanner-primary", "fingerprint": "bc00c7c88cba6297", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-42a7d6fb73926c29", "level": "error", "message": {"text": "Dangling fetch: PUT /api/notification-prefs (client/src/components/portal/NotificationPreferences.jsx:45)"}, "properties": {"repobilityId": "179bd645020abed0", "scanner": "scanner-primary", "fingerprint": "42a7d6fb73926c29", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-61ff489f24fd024a", "level": "error", "message": {"text": "Dangling fetch: GET /tracking/maps-key (client/src/pages/PortalPage.jsx:7454)"}, "properties": {"repobilityId": "eb48d1ca0b9e3856", "scanner": "scanner-primary", "fingerprint": "61ff489f24fd024a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-61510528dab11786", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimatePage.jsx:1032)"}, "properties": {"repobilityId": "dca58a6e8f3ce67a", "scanner": "scanner-primary", "fingerprint": "61510528dab11786", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e44718ea0566be2b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimatePage.jsx:1116)"}, "properties": {"repobilityId": "9504e602e402424c", "scanner": "scanner-primary", "fingerprint": "e44718ea0566be2b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60071cd8eebb8921", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimatePage.jsx:1246)"}, "properties": {"repobilityId": "352111fcce9ecaad", "scanner": "scanner-primary", "fingerprint": "60071cd8eebb8921", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-afaedc7de9a2ecb9", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/EstimatePage.jsx:1307)"}, "properties": {"repobilityId": "d86e6689a8183bfc", "scanner": "scanner-primary", "fingerprint": "afaedc7de9a2ecb9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c89a62bb4e3989e3", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimatePage.jsx:1426)"}, "properties": {"repobilityId": "1625071e79252b04", "scanner": "scanner-primary", "fingerprint": "c89a62bb4e3989e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-667fe2337f6d3299", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimatePage.jsx:1789)"}, "properties": {"repobilityId": "52543049700964ad", "scanner": "scanner-primary", "fingerprint": "667fe2337f6d3299", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-478f08659e0f7fbb", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimatePage.jsx:1981)"}, "properties": {"repobilityId": "ca52b7a2105f5dfe", "scanner": "scanner-primary", "fingerprint": "478f08659e0f7fbb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-147711a758368f42", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimatePage.jsx:2042)"}, "properties": {"repobilityId": "199c3268f1ef2fbe", "scanner": "scanner-primary", "fingerprint": "147711a758368f42", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-92fdee3b4422a87b", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimatePage.jsx:3835)"}, "properties": {"repobilityId": "d22bdaa6a42d1ffb", "scanner": "scanner-primary", "fingerprint": "92fdee3b4422a87b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73f59b910204e983", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)}&limit=5 (client/src/pages/admin/EstimateToolViewV2.jsx:2347)"}, "properties": {"repobilityId": "610c67f8521ac2a4", "scanner": "scanner-primary", "fingerprint": "73f59b910204e983", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-faa99c11e65c3915", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(q)} (client/src/pages/admin/EstimateToolViewV2.jsx:2384)"}, "properties": {"repobilityId": "08136fa2eccdf425", "scanner": "scanner-primary", "fingerprint": "faa99c11e65c3915", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f8c94bc9fad6e051", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup/verify (client/src/pages/admin/EstimateToolViewV2.jsx:2427)"}, "properties": {"repobilityId": "33681f7d846aedad", "scanner": "scanner-primary", "fingerprint": "f8c94bc9fad6e051", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a1de117bc0adc065", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimator/property-lookup (client/src/pages/admin/EstimateToolViewV2.jsx:2648)"}, "properties": {"repobilityId": "774652db8eba6d85", "scanner": "scanner-primary", "fingerprint": "a1de117bc0adc065", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-65d22c914c969b53", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(addrSearch)}&limit=3 (client/src/pages/admin/EstimateToolViewV2.jsx:2718)"}, "properties": {"repobilityId": "d1a4fc3909b994ac", "scanner": "scanner-primary", "fingerprint": "65d22c914c969b53", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c6ae9b473b184b0", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/lookup/satellite-ai (client/src/pages/admin/EstimateToolViewV2.jsx:2832)"}, "properties": {"repobilityId": "0608f28cede4334d", "scanner": "scanner-primary", "fingerprint": "6c6ae9b473b184b0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a267c135c38e56a", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimator/calculate-estimate (client/src/pages/admin/EstimateToolViewV2.jsx:3253)"}, "properties": {"repobilityId": "d2e3ad7d340ba8f5", "scanner": "scanner-primary", "fingerprint": "1a267c135c38e56a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-10804e9030b0f828", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimates (client/src/pages/admin/EstimateToolViewV2.jsx:3400)"}, "properties": {"repobilityId": "0bcc0d930661cd9b", "scanner": "scanner-primary", "fingerprint": "10804e9030b0f828", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe3930c3a68438c7", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/estimates/${useId}/send (client/src/pages/admin/EstimateToolViewV2.jsx:3490)"}, "properties": {"repobilityId": "74713cf4bac55de6", "scanner": "scanner-primary", "fingerprint": "fe3930c3a68438c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-116b5821567bbc6e", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/customers?search=${encodeURIComponent(digits)}&limit=1 (client/src/pages/admin/EstimateToolViewV2.jsx:5932)"}, "properties": {"repobilityId": "31982aa41cdef893", "scanner": "scanner-primary", "fingerprint": "116b5821567bbc6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e433113a55afe7a2", "level": "error", "message": {"text": "Dangling fetch: GET /api${path} (client/src/pages/admin/ProtocolReferenceTabV2.jsx:36)"}, "properties": {"repobilityId": "978368321a621f64", "scanner": "scanner-primary", "fingerprint": "e433113a55afe7a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95f25d5aa3166a95", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-content-agent.js:24)"}, "properties": {"repobilityId": "d5074164eeefcd81", "scanner": "scanner-primary", "fingerprint": "95f25d5aa3166a95", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2937ed603a7b4f20", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-retention-agent.js:8)"}, "properties": {"repobilityId": "cfc52a0ad2ec3a34", "scanner": "scanner-primary", "fingerprint": "2937ed603a7b4f20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ffb483f6bc3f26c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-managed-agent.js:24)"}, "properties": {"repobilityId": "fecd00ed8ef2a855", "scanner": "scanner-primary", "fingerprint": "5ffb483f6bc3f26c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-78136a3f65ece0d5", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-bi-agent.js:8)"}, "properties": {"repobilityId": "68092e67c7c513d4", "scanner": "scanner-primary", "fingerprint": "78136a3f65ece0d5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2534ba6a0e0d8513", "level": "error", "message": {"text": "Dangling fetch: GET https://api.anthropic.com/v1${path} (scripts/create-backlink-strategy-agent.js:26)"}, "properties": {"repobilityId": "b96706b052e95383", "scanner": "scanner-primary", "fingerprint": "2534ba6a0e0d8513", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-550d0adfe34799d9", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/agents (scripts/create-lead-response-agent.js:20)"}, "properties": {"repobilityId": "26b4788aabb71ada", "scanner": "scanner-primary", "fingerprint": "550d0adfe34799d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18b6e859936f49e1", "level": "error", "message": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/place/details/json?place_id=${loc.googlePlaceId}&fields=${fields}&key=${GOOGLE_KEY} (server/routes/admin-reviews.js:713)"}, "properties": {"repobilityId": "c4e529f1dae62ad4", "scanner": "scanner-primary", "fingerprint": "18b6e859936f49e1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-374a7fb6b1b1d91f", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_VISION_MODEL}:generateContent?key=${apiKey} (server/routes/property-lookup-v2.js:2724)"}, "properties": {"repobilityId": "4e1efc60eefee4b0", "scanner": "scanner-primary", "fingerprint": "374a7fb6b1b1d91f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-72d26ed944728a27", "level": "error", "message": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,precipitation_probability&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone=America/New_York (server/routes/admin-schedule.js:1254)"}, "properties": {"repobilityId": "af783f60104369b7", "scanner": "scanner-primary", "fingerprint": "72d26ed944728a27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-505c1cf687269f60", "level": "error", "message": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js:666)"}, "properties": {"repobilityId": "35cf62ba5d35628a", "scanner": "scanner-primary", "fingerprint": "505c1cf687269f60", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0a958e7c5d3cb0e0", "level": "error", "message": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/routes/admin-content-v2.js:716)"}, "properties": {"repobilityId": "cd9fc49a69e3a4c2", "scanner": "scanner-primary", "fingerprint": "0a958e7c5d3cb0e0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2255d42ded951e46", "level": "error", "message": {"text": "Dangling fetch: GET https://docs.google.com/spreadsheets/d/1GbZ8KGMdJr8_DsRsW5qsshZSJaiKivg8ZR9Fz09lnb0/gviz/tq?tqx=out:csv&gid=24910236 (server/routes/admin-import-sheets.js:214)"}, "properties": {"repobilityId": "1d3c6f0c958399c3", "scanner": "scanner-primary", "fingerprint": "2255d42ded951e46", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95d7145eeaf9abe8", "level": "error", "message": {"text": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/routes/feed.js:362)"}, "properties": {"repobilityId": "0687049bd53a75ed", "scanner": "scanner-primary", "fingerprint": "95d7145eeaf9abe8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7d2cddd7d85a0e3", "level": "error", "message": {"text": "Dangling fetch: GET /api/reviews/featured?limit=8 (server/routes/estimate-public.js:5281)"}, "properties": {"repobilityId": "d2651119e2523f55", "scanner": "scanner-primary", "fingerprint": "c7d2cddd7d85a0e3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-982b20a4223524ea", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0/me?access_token=${token} (server/services/knowledge-base.js:309)"}, "properties": {"repobilityId": "836cf96eb3d12c9b", "scanner": "scanner-primary", "fingerprint": "982b20a4223524ea", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02d7d37b2dc3ea0a", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0/debug_token?input_token=${token}&access_token=${token} (server/services/knowledge-base.js:312)"}, "properties": {"repobilityId": "4b42f41812a93fc7", "scanner": "scanner-primary", "fingerprint": "02d7d37b2dc3ea0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5cdb3bc568adba0a", "level": "error", "message": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/knowledge-base.js:335)"}, "properties": {"repobilityId": "68081231d62d4a5e", "scanner": "scanner-primary", "fingerprint": "5cdb3bc568adba0a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe4cbad95c347c74", "level": "error", "message": {"text": "Dangling fetch: GET https://api.weather.gov/points/27.4217,-82.4065 (server/services/forecast-analyzer.js:23)"}, "properties": {"repobilityId": "3c2b759db8f4d5a6", "scanner": "scanner-primary", "fingerprint": "fe4cbad95c347c74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-715d00bbfa0d48fd", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/photos (server/services/social-media.js:696)"}, "properties": {"repobilityId": "d67c8bf223429ba4", "scanner": "scanner-primary", "fingerprint": "715d00bbfa0d48fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84318d17419a5134", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${FACEBOOK_PAGE_ID}/feed (server/services/social-media.js:714)"}, "properties": {"repobilityId": "e6c747ca310d5ef8", "scanner": "scanner-primary", "fingerprint": "84318d17419a5134", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5796bba3452c75f1", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media (server/services/social-media.js:768)"}, "properties": {"repobilityId": "b08d9abf02fde672", "scanner": "scanner-primary", "fingerprint": "5796bba3452c75f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ae411c5f5d23bd76", "level": "error", "message": {"text": "Dangling fetch: POST https://graph.facebook.com/v25.0/${INSTAGRAM_ACCOUNT_ID}/media_publish (server/services/social-media.js:787)"}, "properties": {"repobilityId": "9a3f5a4c986830fc", "scanner": "scanner-primary", "fingerprint": "ae411c5f5d23bd76", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a00c762c99225007", "level": "error", "message": {"text": "Dangling fetch: POST https://api.linkedin.com/v2/ugcPosts (server/services/social-media.js:826)"}, "properties": {"repobilityId": "342cd7b80213257c", "scanner": "scanner-primary", "fingerprint": "a00c762c99225007", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3db02f3211dc6fc", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_TRANSCRIPTION_MODEL}:generateContent?key=${apiKey} (server/services/call-recording-processor.js:997)"}, "properties": {"repobilityId": "b500cf8cc36a442d", "scanner": "scanner-primary", "fingerprint": "b3db02f3211dc6fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c461a9f1e25580a1", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/call-recording-processor.js:1204)"}, "properties": {"repobilityId": "fd44bb17fe7e1f0d", "scanner": "scanner-primary", "fingerprint": "c461a9f1e25580a1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b7e3e42f72725e69", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_EXTRACTION_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/call-recording-processor.js:1264)"}, "properties": {"repobilityId": "0d777bc07fbfb7da", "scanner": "scanner-primary", "fingerprint": "b7e3e42f72725e69", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2015400f4afd5451", "level": "error", "message": {"text": "Dangling fetch: GET https://www.youtube.com/${handle} (server/services/social-feed.js:177)"}, "properties": {"repobilityId": "83c15ac6cde0a7ad", "scanner": "scanner-primary", "fingerprint": "2015400f4afd5451", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-934a841210fef4c5", "level": "error", "message": {"text": "Dangling fetch: GET https://www.youtube.com/feeds/videos.xml?channel_id=${channelId} (server/services/social-feed.js:215)"}, "properties": {"repobilityId": "705f435d8c477ce2", "scanner": "scanner-primary", "fingerprint": "934a841210fef4c5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-20918f8203f70c74", "level": "error", "message": {"text": "Dangling fetch: POST https://api.beehiiv.com/v2/publications/${process.env.BEEHIIV_PUBLICATION_ID}/subscriptions (server/services/appointment-tagger.js:202)"}, "properties": {"repobilityId": "f3a9fb68c91403e7", "scanner": "scanner-primary", "fingerprint": "20918f8203f70c74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ab72027cb9227513", "level": "error", "message": {"text": "Dangling fetch: GET https://graph.facebook.com/v25.0${path}${separator}access_token=${encodeURIComponent(token)} (server/services/token-health.js:37)"}, "properties": {"repobilityId": "007d9584e5d51a98", "scanner": "scanner-primary", "fingerprint": "ab72027cb9227513", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b03a7c2741bc58b4", "level": "error", "message": {"text": "Dangling fetch: GET https://api.linkedin.com/v2/me (server/services/token-health.js:281)"}, "properties": {"repobilityId": "2ff992f601507b82", "scanner": "scanner-primary", "fingerprint": "b03a7c2741bc58b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b06d6a0b1c55d696", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (server/services/token-health.js:322)"}, "properties": {"repobilityId": "099614253c4a9be9", "scanner": "scanner-primary", "fingerprint": "b06d6a0b1c55d696", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9975fc1d75e03cd3", "level": "error", "message": {"text": "Dangling fetch: GET https://api.beehiiv.com/v2/publications/${pubId} (server/services/token-health.js:408)"}, "properties": {"repobilityId": "09dd8ffd5f9d1a4a", "scanner": "scanner-primary", "fingerprint": "9975fc1d75e03cd3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5a9d83fe7da580c7", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dataforseo.com/v3/appendix/user_data (server/services/token-health.js:445)"}, "properties": {"repobilityId": "7c706d6e67484cec", "scanner": "scanner-primary", "fingerprint": "5a9d83fe7da580c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f5fe39f8134b15f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.stripe.com/v1/account (server/services/token-health.js:478)"}, "properties": {"repobilityId": "fc29fe9ee3be7c5c", "scanner": "scanner-primary", "fingerprint": "0f5fe39f8134b15f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b30aa042c941b73f", "level": "error", "message": {"text": "Dangling fetch: GET https://api.twilio.com/2010-04-01/Accounts/${sid}.json (server/services/token-health.js:516)"}, "properties": {"repobilityId": "34c89b63978d4365", "scanner": "scanner-primary", "fingerprint": "b30aa042c941b73f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0034ed9dbba4f702", "level": "error", "message": {"text": "Dangling fetch: GET https://api.anthropic.com/v1/models?limit=1 (server/services/token-health.js:549)"}, "properties": {"repobilityId": "97cb19298bf3cd8e", "scanner": "scanner-primary", "fingerprint": "0034ed9dbba4f702", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aeb6ee3cf69a68e4", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openai.com/v1/models (server/services/token-health.js:583)"}, "properties": {"repobilityId": "4555f00fe17f45de", "scanner": "scanner-primary", "fingerprint": "aeb6ee3cf69a68e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6c381fa26340d2cf", "level": "error", "message": {"text": "Dangling fetch: GET https://generativelanguage.googleapis.com/v1beta/models?key=${encodeURIComponent(key)} (server/services/token-health.js:617)"}, "properties": {"repobilityId": "7328513a48cde5a6", "scanner": "scanner-primary", "fingerprint": "6c381fa26340d2cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fa3af4ab8ed41dc2", "level": "error", "message": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=Bradenton,FL&key=${encodeURIComponent(key)} (server/services/token-health.js:650)"}, "properties": {"repobilityId": "1e8696005fa01035", "scanner": "scanner-primary", "fingerprint": "fa3af4ab8ed41dc2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a35ddf04e3c82104", "level": "error", "message": {"text": "Dangling fetch: GET https://api.sendgrid.com/v3/user/account (server/services/token-health.js:683)"}, "properties": {"repobilityId": "c57269865efc4010", "scanner": "scanner-primary", "fingerprint": "a35ddf04e3c82104", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2d7cf5c16bb99250", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com/repos/${owner}/${repo} (server/services/token-health.js:722)"}, "properties": {"repobilityId": "2b67ef045066fd2c", "scanner": "scanner-primary", "fingerprint": "2d7cf5c16bb99250", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c22f73c159540318", "level": "error", "message": {"text": "Dangling fetch: GET https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${GOOGLE_KEY} (server/services/satellite-analyzer.js:329)"}, "properties": {"repobilityId": "7205de9578808da1", "scanner": "scanner-primary", "fingerprint": "c22f73c159540318", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a8b464b4e61d2f5d", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${GEMINI_PROPERTY_MODEL}:generateContent?key=${process.env.GEMINI_API_KEY} (server/services/property-lookup/ai-property-lookup.js:1021)"}, "properties": {"repobilityId": "fd965278468930f7", "scanner": "scanner-primary", "fingerprint": "a8b464b4e61d2f5d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4bf94410ebfa10c1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.open-meteo.com/v1/forecast?latitude=27.40&longitude=-82.40&current=temperature_2m,wind_speed_10m,wind_gusts_10m,precipitation_probability,weather_code&temperature_unit=fahrenheit&wind_speed_unit=mph&timezone=America/New_York (server/services/intelligence-bar/tech-tool"}, "properties": {"repobilityId": "a90ee858b11ab966", "scanner": "scanner-primary", "fingerprint": "4bf94410ebfa10c1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-888ced7e90442e55", "level": "error", "message": {"text": "Dangling fetch: GET https://fawn.ifas.ufl.edu/controller.php/lastObservation/summary/ (server/services/content/content-agent-tools.js:32)"}, "properties": {"repobilityId": "4f8e09ffc34b0d63", "scanner": "scanner-primary", "fingerprint": "888ced7e90442e55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34a61bdb9fda0cd9", "level": "error", "message": {"text": "Dangling fetch: POST https://addressvalidation.googleapis.com/v1:validateAddress?key=${key} (server/services/address-validation/index.js:141)"}, "properties": {"repobilityId": "b115b3a4bef0758d", "scanner": "scanner-primary", "fingerprint": "34a61bdb9fda0cd9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c87cc9e9de332798", "level": "error", "message": {"text": "Dangling fetch: POST https://www.omegaindexer.com/amember/dashboard/api (server/services/backlink-agent/signup-worker.js:21)"}, "properties": {"repobilityId": "86dbdb7c309cd417", "scanner": "scanner-primary", "fingerprint": "c87cc9e9de332798", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1f2b788a0e0c32d9", "level": "error", "message": {"text": "Dangling fetch: GET https://api.twitter.com/2/users/by/username/${target.x_username} (server/services/backlink-agent/x-poller.js:25)"}, "properties": {"repobilityId": "97fb429f0de13068", "scanner": "scanner-primary", "fingerprint": "1f2b788a0e0c32d9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f384dacdab26b63b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (server/services/seo/llm-mention-prober.js:99)"}, "properties": {"repobilityId": "3d0c9fa0d4ada92e", "scanner": "scanner-primary", "fingerprint": "f384dacdab26b63b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6b2a9fed031e0a5c", "level": "note", "message": {"text": "Unused endpoint: USE /api/public/pest-forecast"}, "properties": {"repobilityId": "f52d1d17b61ca61b", "scanner": "scanner-primary", "fingerprint": "6b2a9fed031e0a5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76889df7c8e240c5", "level": "note", "message": {"text": "Unused endpoint: USE /api/"}, "properties": {"repobilityId": "74d8debbe65a14b4", "scanner": "scanner-primary", "fingerprint": "76889df7c8e240c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-81c6209cbfd29154", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth/send-code"}, "properties": {"repobilityId": "4afbf954a9685a70", "scanner": "scanner-primary", "fingerprint": "81c6209cbfd29154", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d1f3851b667f82b", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth/verify-code"}, "properties": {"repobilityId": "98c9e099088293e8", "scanner": "scanner-primary", "fingerprint": "8d1f3851b667f82b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-28e76030b917352b", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/auth/login"}, "properties": {"repobilityId": "0f9874704fcbf1a5", "scanner": "scanner-primary", "fingerprint": "28e76030b917352b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dfadf961c1549be5", "level": "note", "message": {"text": "Unused endpoint: USE /api/stripe/webhook"}, "properties": {"repobilityId": "988b7f54fad925cb", "scanner": "scanner-primary", "fingerprint": "dfadf961c1549be5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b57174277168aa20", "level": "note", "message": {"text": "Unused endpoint: USE /api/webhooks/sendgrid"}, "properties": {"repobilityId": "c3aa7f8161c104c0", "scanner": "scanner-primary", "fingerprint": "b57174277168aa20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd385a58074fb9fd", "level": "note", "message": {"text": "Unused endpoint: USE /api/webhooks/resend"}, "properties": {"repobilityId": "fd4cc68b17376f63", "scanner": "scanner-primary", "fingerprint": "cd385a58074fb9fd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6eb452fbfb454d20", "level": "note", "message": {"text": "Unused endpoint: USE /api/auth"}, "properties": {"repobilityId": "998ca44ee62afef2", "scanner": "scanner-primary", "fingerprint": "6eb452fbfb454d20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10484ff622717d30", "level": "note", "message": {"text": "Unused endpoint: USE /api/services"}, "properties": {"repobilityId": "bd26794451c1824e", "scanner": "scanner-primary", "fingerprint": "10484ff622717d30", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3556b915946f91d2", "level": "note", "message": {"text": "Unused endpoint: USE /api/service/records"}, "properties": {"repobilityId": "cb25502d4d4e141a", "scanner": "scanner-primary", "fingerprint": "3556b915946f91d2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1340d960e275a287", "level": "note", "message": {"text": "Unused endpoint: USE /api/schedule"}, "properties": {"repobilityId": "204becf96905e7ad", "scanner": "scanner-primary", "fingerprint": "1340d960e275a287", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-946dc627de4f272d", "level": "note", "message": {"text": "Unused endpoint: USE /api/billing"}, "properties": {"repobilityId": "4706d0e460de8564", "scanner": "scanner-primary", "fingerprint": "946dc627de4f272d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3a8b7932f72b92f", "level": "note", "message": {"text": "Unused endpoint: USE /api/notifications"}, "properties": {"repobilityId": "57760fcfbe4e46ed", "scanner": "scanner-primary", "fingerprint": "c3a8b7932f72b92f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-829fe3db7e6f3ccd", "level": "note", "message": {"text": "Unused endpoint: USE /api/requests"}, "properties": {"repobilityId": "79d4dc8fd02a56b4", "scanner": "scanner-primary", "fingerprint": "829fe3db7e6f3ccd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f87eed006c8366f2", "level": "note", "message": {"text": "Unused endpoint: USE /api/bouncie"}, "properties": {"repobilityId": "789cf7ae92b1c780", "scanner": "scanner-primary", "fingerprint": "f87eed006c8366f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78e4250422641b48", "level": "note", "message": {"text": "Unused endpoint: USE /api/lawn-health"}, "properties": {"repobilityId": "8b15fae1460dd4bd", "scanner": "scanner-primary", "fingerprint": "78e4250422641b48", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d95f6b6be4decff8", "level": "note", "message": {"text": "Unused endpoint: USE /api/feed"}, "properties": {"repobilityId": "4d5f3b0e6e2594ca", "scanner": "scanner-primary", "fingerprint": "d95f6b6be4decff8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9789e2197d196687", "level": "note", "message": {"text": "Unused endpoint: USE /api/satisfaction"}, "properties": {"repobilityId": "2952d80f3d6474ca", "scanner": "scanner-primary", "fingerprint": "9789e2197d196687", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8c4074101feb8fea", "level": "note", "message": {"text": "Unused endpoint: USE /api/property"}, "properties": {"repobilityId": "248adf1c83f1a1c8", "scanner": "scanner-primary", "fingerprint": "8c4074101feb8fea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2249df4232c9880e", "level": "note", "message": {"text": "Unused endpoint: USE /api/customer-pricing"}, "properties": {"repobilityId": "98b07a66c6f98dac", "scanner": "scanner-primary", "fingerprint": "2249df4232c9880e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-46e56fdbaf8b7fb1", "level": "note", "message": {"text": "Unused endpoint: USE /api/service-preferences"}, "properties": {"repobilityId": "918a6d4fd300703f", "scanner": "scanner-primary", "fingerprint": "46e56fdbaf8b7fb1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-30873d2a5b3f5f7f", "level": "note", "message": {"text": "Unused endpoint: USE /api/referrals"}, "properties": {"repobilityId": "efc84a27f4d40957", "scanner": "scanner-primary", "fingerprint": "30873d2a5b3f5f7f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-da7b886331b0df22", "level": "note", "message": {"text": "Unused endpoint: USE /r"}, "properties": {"repobilityId": "4a0864afc8fb2b7e", "scanner": "scanner-primary", "fingerprint": "da7b886331b0df22", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-350ae3665aa53e8f", "level": "note", "message": {"text": "Unused endpoint: USE /l"}, "properties": {"repobilityId": "37155491d65393fb", "scanner": "scanner-primary", "fingerprint": "350ae3665aa53e8f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-114e093442e08b33", "level": "note", "message": {"text": "Unused endpoint: USE /api/promotions"}, "properties": {"repobilityId": "07170d10af9632cf", "scanner": "scanner-primary", "fingerprint": "114e093442e08b33", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b90a25f6d5f27707", "level": "note", "message": {"text": "Unused endpoint: USE /api/documents"}, "properties": {"repobilityId": "f88c65caf462f532", "scanner": "scanner-primary", "fingerprint": "b90a25f6d5f27707", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9b4e487593817d01", "level": "note", "message": {"text": "Unused endpoint: USE /api/badges"}, "properties": {"repobilityId": "df5f9316a16358a4", "scanner": "scanner-primary", "fingerprint": "9b4e487593817d01", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2a21eba6328a50b", "level": "note", "message": {"text": "Unused endpoint: USE /api/tracking"}, "properties": {"repobilityId": "90bb53e7b0bb992f", "scanner": "scanner-primary", "fingerprint": "a2a21eba6328a50b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c75c6f40d00cae7", "level": "note", "message": {"text": "Unused endpoint: USE /api/onboarding"}, "properties": {"repobilityId": "e69b7abca8e2a89e", "scanner": "scanner-primary", "fingerprint": "1c75c6f40d00cae7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb249c271605d179", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/auth"}, "properties": {"repobilityId": "8f35ba71b72ebdee", "scanner": "scanner-primary", "fingerprint": "fb249c271605d179", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-092746d17c123d48", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/push"}, "properties": {"repobilityId": "5fa138e6e53e884a", "scanner": "scanner-primary", "fingerprint": "092746d17c123d48", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cfda265bff680e4a", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/intelligence-bar"}, "properties": {"repobilityId": "ee0e1fc0b381b123", "scanner": "scanner-primary", "fingerprint": "cfda265bff680e4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-add2515f2acc4783", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/tool-health"}, "properties": {"repobilityId": "193c3602d1930470", "scanner": "scanner-primary", "fingerprint": "add2515f2acc4783", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1c6fb1db38ace27", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/customers/intelligence"}, "properties": {"repobilityId": "a65cbcce40fd1a8f", "scanner": "scanner-primary", "fingerprint": "d1c6fb1db38ace27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bb10d7044faa9d8c", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/customers"}, "properties": {"repobilityId": "3d6e413e4e8a057c", "scanner": "scanner-primary", "fingerprint": "bb10d7044faa9d8c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fe447c7681abdbbc", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/dashboard"}, "properties": {"repobilityId": "8e360ce623ae821d", "scanner": "scanner-primary", "fingerprint": "fe447c7681abdbbc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb1fc6861e4ae200", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/command-center"}, "properties": {"repobilityId": "4fe7b1a498e1b4b5", "scanner": "scanner-primary", "fingerprint": "fb1fc6861e4ae200", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8b2fa41d176f1d8f", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/feature-flags"}, "properties": {"repobilityId": "54eff4e485ab2010", "scanner": "scanner-primary", "fingerprint": "8b2fa41d176f1d8f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e03258c676ef134f", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/turf-height"}, "properties": {"repobilityId": "774857259a5e0f96", "scanner": "scanner-primary", "fingerprint": "e03258c676ef134f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-22ba67047bd4c317", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/estimates"}, "properties": {"repobilityId": "ca4455d7dc152979", "scanner": "scanner-primary", "fingerprint": "22ba67047bd4c317", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b840e83817603f6e", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/service-outlines"}, "properties": {"repobilityId": "e29fc356e1c6697c", "scanner": "scanner-primary", "fingerprint": "b840e83817603f6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7d0a18c45ddf8864", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/pipeline"}, "properties": {"repobilityId": "b042b7d03feb7829", "scanner": "scanner-primary", "fingerprint": "7d0a18c45ddf8864", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f97755a26d3ff67c", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/lookup"}, "properties": {"repobilityId": "f35c4b465305b774", "scanner": "scanner-primary", "fingerprint": "f97755a26d3ff67c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-888a705c00461d0a", "level": "note", "message": {"text": "Unused endpoint: USE /api/estimates"}, "properties": {"repobilityId": "613e3d72aca1749f", "scanner": "scanner-primary", "fingerprint": "888a705c00461d0a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fda6b8ddd893e312", "level": "note", "message": {"text": "Unused endpoint: USE /api/service-outlines"}, "properties": {"repobilityId": "4034c3c2322e2d4d", "scanner": "scanner-primary", "fingerprint": "fda6b8ddd893e312", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-abcd143bf0da4ef5", "level": "note", "message": {"text": "Unused endpoint: GET /estimate/:token"}, "properties": {"repobilityId": "9a8c1b8fa456468e", "scanner": "scanner-primary", "fingerprint": "abcd143bf0da4ef5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2bbe16f8201afd38", "level": "note", "message": {"text": "Unused endpoint: USE /api/public/quote"}, "properties": {"repobilityId": "c7e30244e9287873", "scanner": "scanner-primary", "fingerprint": "2bbe16f8201afd38", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-122b84e42ad2868f", "level": "note", "message": {"text": "Unused endpoint: USE /api/public/estimator"}, "properties": {"repobilityId": "f37dcb4c24fde9db", "scanner": "scanner-primary", "fingerprint": "122b84e42ad2868f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cf8d1a1b795d6a63", "level": "note", "message": {"text": "Unused endpoint: USE /api/admin/reviews"}, "properties": {"repobilityId": "2b3b108a0ab0c8d0", "scanner": "scanner-primary", "fingerprint": "cf8d1a1b795d6a63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}