{"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_blueprint_gap", "name": "Foundry mined blueprint gap alignment: rileybleeker/Onyx", "shortDescription": {"text": "Foundry mined blueprint gap alignment: rileybleeker/Onyx"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rileybleeker/Onyx#1\nRepo: rileybleeker/Onyx\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 101\nNode types: {'pr_file': 35, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_findin"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: rileybleeker/Onyx", "shortDescription": {"text": "Foundry mined test ci gap after feedback: rileybleeker/Onyx"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\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: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rileybleeker/Onyx#1\nRepo: rileybleeker/Onyx\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 101\nNode types: {'pr_file': 35, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'rep"}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "scanner-c2859065754b21ce", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d39095255983c126", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca08d2388ee90079", "name": "Possibly dead Python function: do", "shortDescription": {"text": "Possibly dead Python function: do"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3668ceb57cc64ed7", "name": "Possibly dead Python function: do", "shortDescription": {"text": "Possibly dead Python function: do"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-419e0603f594dcf2", "name": "Possibly dead Python function: to_cycle_et_date_str", "shortDescription": {"text": "Possibly dead Python function: to_cycle_et_date_str"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18fb119c7b30dd4e", "name": "Possibly dead Python function: lap_metrics", "shortDescription": {"text": "Possibly dead Python function: lap_metrics"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d8ede41466d90ea", "name": "Possibly dead Python function: objective", "shortDescription": {"text": "Possibly dead Python function: objective"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f50217cc1ed8f0a5", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4e04a28507dfccf", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b37aa8feb3cc0c59", "name": "Possibly dead Python function: do", "shortDescription": {"text": "Possibly dead Python function: do"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bbd4f56013849d6", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32e3ec3796481eb6", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcbfdc51507cc153", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6a501e04d016544", "name": "Possibly dead Python function: parse_offset_str", "shortDescription": {"text": "Possibly dead Python function: parse_offset_str"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8584ff486617c36", "name": "Possibly dead Python function: handle_starttag", "shortDescription": {"text": "Possibly dead Python function: handle_starttag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3044b1828a1f4607", "name": "Possibly dead Python function: handle_data", "shortDescription": {"text": "Possibly dead Python function: handle_data"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2d4f8c6a07f9b34", "name": "Possibly dead Python function: handle_endtag", "shortDescription": {"text": "Possibly dead Python function: handle_endtag"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66bcc1e6a33f3577", "name": "Possibly dead Python function: download_garmin", "shortDescription": {"text": "Possibly dead Python function: download_garmin"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3038135ec668ee79", "name": "Possibly dead Python function: download_whoop", "shortDescription": {"text": "Possibly dead Python function: download_whoop"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-489a94186e3428f4", "name": "Possibly dead Python function: download_spotify", "shortDescription": {"text": "Possibly dead Python function: download_spotify"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec80666bc1974d69", "name": "Possibly dead Python function: download_tanita", "shortDescription": {"text": "Possibly dead Python function: download_tanita"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9bba8dc0e750e0b", "name": "Possibly dead Python function: download_cronometer", "shortDescription": {"text": "Possibly dead Python function: download_cronometer"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9a720d2221967b9", "name": "Possibly dead Python function: upload_garmin", "shortDescription": {"text": "Possibly dead Python function: upload_garmin"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91083781de5cc3af", "name": "Possibly dead Python function: upload_whoop", "shortDescription": {"text": "Possibly dead Python function: upload_whoop"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4caf473c2e882860", "name": "Possibly dead Python function: upload_spotify", "shortDescription": {"text": "Possibly dead Python function: upload_spotify"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6879602564e2a76f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.tsx:144", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.tsx: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-80fc690eed16539e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MobileNav.tsx:187", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MobileNav.tsx:187"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7ffe6f86a3bc6700", "name": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/MobileNav.tsx:181", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/MobileNav.tsx:181"}, "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-1333eda0ce0996d0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StatCard.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StatCard.tsx:54"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e2cb2eca86b65e22", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Sidebar.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Sidebar.tsx:62"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a127bb6777d0d06", "name": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/Sidebar.tsx:56", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/Sidebar.tsx:56"}, "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-3d7b8fc6a82934ce", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StackEditorModal.tsx:212", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StackEditorModal.tsx:212"}, "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-7267e129ed1ebefe", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/KpiTile.tsx:74", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/KpiTile.tsx:74"}, "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-4be3ba687c742100", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SectionHeader.tsx:62", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SectionHeader.tsx:62"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9d67fc8bfda6176", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/spotify/SpotifyClient.tsx:990", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/spotify/SpotifyClient.tsx:990"}, "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-9a394d95fa0b9c8c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/habits/HabitsClient.tsx:634", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/habits/HabitsClient.tsx:634"}, "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-175277236b3746a3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:587", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:587"}, "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-a6271aa3df289730", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:803", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:803"}, "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-998a4f63ff2e0384", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/nutrition/NutritionClient.tsx:546", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/nutrition/NutritionClient.tsx:546"}, "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-95eecb4adae800e5", "name": "Privileged port 13 in use", "shortDescription": {"text": "Privileged port 13 in use"}, "fullDescription": {"text": "Port 13 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90f8d113d3a5e398", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0939256d8da25ba1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-033105622a58760a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70d7afce4578b9c5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc180ed796895f59", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36e3e6d6292f4343", "name": "Very large file: hrv_analysis.py (4903 lines)", "shortDescription": {"text": "Very large file: hrv_analysis.py (4903 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-ccfb395b6061ecde", "name": "Very large file: causal_inference.py (1515 lines)", "shortDescription": {"text": "Very large file: causal_inference.py (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-f76dd8f101f308d7", "name": "Very large file: frontend/src/app/spotify/SpotifyClient.tsx (1169 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/spotify/SpotifyClient.tsx (1169 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-a1fa90eac5045a5e", "name": "Very large file: frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx (2787 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx (2787 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-0fa3691756163fca", "name": "Very large file: frontend/src/app/sleep/SleepClient.tsx (903 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/sleep/SleepClient.tsx (903 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-091e5942922611f7", "name": "Very large file: frontend/src/app/supplements/SupplementsClient.tsx (1178 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/supplements/SupplementsClient.tsx (1178 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-f8b8b4ac1a075787", "name": "Very large file: frontend/src/lib/queries.ts (1532 lines)", "shortDescription": {"text": "Very large file: frontend/src/lib/queries.ts (1532 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-c10c0dc3d0937645", "name": "Very large file: audit/re-audit-2026-06-07/stats/hrv_analysis.py (4480 lines)", "shortDescription": {"text": "Very large file: audit/re-audit-2026-06-07/stats/hrv_analysis.py (4480 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-8ce21590faebe37a", "name": "Very large file: audit/re-audit-2026-06-07/stats/causal_inference.py (1215 lines)", "shortDescription": {"text": "Very large file: audit/re-audit-2026-06-07/stats/causal_inference.py (1215 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-7c58f99dfdd65917", "name": "Very large file: audit/stats-bundle/hrv_analysis.py (3913 lines)", "shortDescription": {"text": "Very large file: audit/stats-bundle/hrv_analysis.py (3913 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-efeb9d18cedab390", "name": "Very large file: audit/re-audit-2026-05-26/stats/hrv_analysis.py (4252 lines)", "shortDescription": {"text": "Very large file: audit/re-audit-2026-05-26/stats/hrv_analysis.py (4252 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-571c1545e15b442d", "name": "Very large file: audit/re-audit-2026-05-26/stats/causal_inference.py (1155 lines)", "shortDescription": {"text": "Very large file: audit/re-audit-2026-05-26/stats/causal_inference.py (1155 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "17 test file(s) for 202 source file(s) (ratio 0.08). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 273 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 41 placeholder/mock markers across 21 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ff39a226c34908a", "name": "Commented-code block (9 lines) in journal_etl.py:403", "shortDescription": {"text": "Commented-code block (9 lines) in journal_etl.py:403"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-680ed747b33ce8a6", "name": "Commented-code block (8 lines) in spotify_etl.py:243", "shortDescription": {"text": "Commented-code block (8 lines) in spotify_etl.py:243"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-377ee5250beddb75", "name": "Commented-code block (13 lines) in audit_runner.py:84", "shortDescription": {"text": "Commented-code block (13 lines) in audit_runner.py:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3da5e80d3c76343", "name": "Commented-code block (6 lines) in whoop_journal_import.py:293", "shortDescription": {"text": "Commented-code block (6 lines) in whoop_journal_import.py:293"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d55d028ca84f2039", "name": "Legacy-named symbol `_behavioral_v1` in hrv_analysis.py:165", "shortDescription": {"text": "Legacy-named symbol `_behavioral_v1` in hrv_analysis.py:165"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac1be4fb4ae15095", "name": "Commented-code block (5 lines) in hrv_analysis.py:171", "shortDescription": {"text": "Commented-code block (5 lines) in hrv_analysis.py:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827bead7010d955f", "name": "Commented-code block (7 lines) in whoop_etl.py:198", "shortDescription": {"text": "Commented-code block (7 lines) in whoop_etl.py:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdbbadef3531facd", "name": "Network/subprocess call without timeout or try/except \u2014 whoop_etl.py:125", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 whoop_etl.py:125"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afc285ecbb355844", "name": "Commented-code block (6 lines) in gps_tz_backfill.py:119", "shortDescription": {"text": "Commented-code block (6 lines) in gps_tz_backfill.py: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-69ba62c4a505a54b", "name": "Legacy-named symbol `dir_acc_legacy` in hrv_predict.py:349", "shortDescription": {"text": "Legacy-named symbol `dir_acc_legacy` in hrv_predict.py:349"}, "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-1dff3ef892421125", "name": "Commented-code block (6 lines) in hrv_predict.py:337", "shortDescription": {"text": "Commented-code block (6 lines) in hrv_predict.py: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-bc649a3dfa62c701", "name": "Commented-code block (6 lines) in garmin_etl.py:846", "shortDescription": {"text": "Commented-code block (6 lines) in garmin_etl.py:846"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d04bc4b85cb10dd", "name": "Commented-code block (6 lines) in hrv_backfill_check.py:51", "shortDescription": {"text": "Commented-code block (6 lines) in hrv_backfill_check.py: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-25826e267bfe1703", "name": "Commented-code block (9 lines) in eight_sleep_etl.py:39", "shortDescription": {"text": "Commented-code block (9 lines) in eight_sleep_etl.py:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f6746afcdf6c92d", "name": "Commented-code block (5 lines) in cronometer_import.py:57", "shortDescription": {"text": "Commented-code block (5 lines) in cronometer_import.py:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c385f381f2d769a7", "name": "Commented-code block (11 lines) in causal_inference.py:129", "shortDescription": {"text": "Commented-code block (11 lines) in causal_inference.py:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f32bd8d58446175", "name": "Commented-code block (6 lines) in frontend/playwright.config.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/playwright.config.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26dd281d4c81922b", "name": "Commented-code block (7 lines) in frontend/src/middleware.ts:14", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/middleware.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-421b9d138b191d66", "name": "Commented-code block (6 lines) in frontend/src/components/DeferredMount.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/DeferredMount.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ea2e3c0f4f1a924", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CustomSupplementFlow.tsx:243", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CustomSupplementFlow.tsx:243"}, "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-d725dee8eb8cc1d3", "name": "Commented-code block (7 lines) in frontend/src/app/caffeine/page.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/caffeine/page.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56e5150187b24611", "name": "Commented-code block (5 lines) in frontend/src/app/caffeine/CaffeineClient.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/caffeine/CaffeineClient.tsx: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-d459544e5bfb0d52", "name": "Commented-code block (5 lines) in frontend/src/app/spotify/SpotifyLoader.tsx:17", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/spotify/SpotifyLoader.tsx: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-7de1e8e00f219f7b", "name": "Commented-code block (7 lines) in frontend/src/app/spotify/page.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/spotify/page.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70fcb90be6994482", "name": "Commented-code block (6 lines) in frontend/src/app/spotify/SpotifyClient.tsx:128", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/spotify/SpotifyClient.tsx:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4db639221205885e", "name": "Commented-code block (5 lines) in frontend/src/app/habits/HabitsClient.tsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/habits/HabitsClient.tsx: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-67fe22073310abfa", "name": "Commented-code block (6 lines) in frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx:30", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx: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-4c5d282774e9586f", "name": "Commented-code block (8 lines) in frontend/src/app/analytics/hrv/page.tsx:5", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/app/analytics/hrv/page.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12c9832556319bac", "name": "Commented-code block (6 lines) in frontend/src/app/analytics/travel/page.tsx:172", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/analytics/travel/page.tsx: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-f88b043cb96ccf9b", "name": "Commented-code block (7 lines) in frontend/src/app/bland-altman/page.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/bland-altman/page.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69a309e1826da61f", "name": "Commented-code block (5 lines) in frontend/src/app/bland-altman/BlandAltmanClient.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/bland-altman/BlandAltmanClient.tsx:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7110e2dae7adfa1", "name": "Commented-code block (6 lines) in frontend/src/app/api/habits/complete/route.ts:47", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/api/habits/complete/route.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dc432e1cae218b70", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/complete/route.ts:156", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/complete/route.ts: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-6fbe550102364349", "name": "Commented-code block (9 lines) in frontend/src/app/api/habits/sync/route.ts:189", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/app/api/habits/sync/route.ts:189"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c906782fb23a43e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/sync/route.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/sync/route.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f23dd6cd70a9fab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/list/route.ts:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/list/route.ts: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-58a8dd2914ffffe1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/chat/route.ts:687", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/chat/route.ts:687"}, "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-3d56cc94f7873d3a", "name": "Commented-code block (5 lines) in frontend/src/app/api/status/route.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/api/status/route.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30e13423ec965bd0", "name": "Commented-code block (5 lines) in frontend/src/app/api/meals/route.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/api/meals/route.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-073d032dcc81d302", "name": "Commented-code block (5 lines) in frontend/src/app/whoop/WhoopClient.tsx:30", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/whoop/WhoopClient.tsx: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-7563b1a587810830", "name": "Commented-code block (7 lines) in frontend/src/app/whoop/page.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/whoop/page.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-401970300026fafd", "name": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepClient.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepClient.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32c73f735a72851a", "name": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepLoader.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepLoader.tsx: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-2d6d128dc1d77fb8", "name": "Commented-code block (7 lines) in frontend/src/app/sleep/page.tsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/sleep/page.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b02089310a0e1c3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sleep/page.tsx:23", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sleep/page.tsx: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-f1bff9e690942036", "name": "Commented-code block (5 lines) in frontend/src/app/supplements/SupplementsClient.tsx:158", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/supplements/SupplementsClient.tsx:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8dc8872612d75959", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:464", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:464"}, "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-f7c108d49477046c", "name": "Commented-code block (5 lines) in frontend/src/app/heart/HeartClient.tsx:20", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/heart/HeartClient.tsx: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-2967f59402df3598", "name": "Commented-code block (7 lines) in frontend/src/app/heart/page.tsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/heart/page.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8a0acebb82eea1c", "name": "Commented-code block (6 lines) in frontend/src/app/status/page.tsx:231", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/app/status/page.tsx: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-22e9a04d151c30be", "name": "Commented-code block (7 lines) in frontend/src/app/activities/page.tsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/activities/page.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3fcf07c9e198651", "name": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesClient.tsx:40", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesClient.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0faaf17ca0cc7980", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:400", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:400"}, "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-3e747db9c799b396", "name": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesLoader.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesLoader.tsx: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-976e11d9cddf85ef", "name": "Commented-code block (5 lines) in frontend/src/app/nutrition/NutritionLoader.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/nutrition/NutritionLoader.tsx: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-da1a870885e55795", "name": "Commented-code block (7 lines) in frontend/src/app/nutrition/NutritionClient.tsx:132", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/app/nutrition/NutritionClient.tsx: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-263f55b0e78e56d5", "name": "Commented-code block (10 lines) in frontend/src/app/nutrition/page.tsx:7", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/app/nutrition/page.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28a2d97b5d848f9d", "name": "Commented-code block (5 lines) in frontend/src/lib/queries-hrv.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/queries-hrv.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-417c19e7120951ac", "name": "Commented-code block (10 lines) in frontend/src/lib/format.ts:6", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/lib/format.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-13c852a3b363fc6e", "name": "Commented-code block (10 lines) in frontend/src/lib/spotify-server.ts:217", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/lib/spotify-server.ts:217"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbd0f8592790a24e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/spotify-server.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/spotify-server.ts:75"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ae864ff25e63c2a", "name": "Commented-code block (5 lines) in frontend/src/lib/supplement-stacks.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/supplement-stacks.ts: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-c4a1c5de244aaabb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/dsld.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/dsld.ts:69"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c63376802fdccff6", "name": "Commented-code block (8 lines) in frontend/src/lib/queries.ts:28", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/lib/queries.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1229f367e29a57e6", "name": "Commented-code block (5 lines) in frontend/e2e/smoke.spec.ts:22", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/e2e/smoke.spec.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d264047108318082", "name": "Commented-code block (5 lines) in tests/test_sarimax_asfreq.py:91", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_sarimax_asfreq.py: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-75f710cbd929318a", "name": "Commented-code block (6 lines) in tests/test_causal_robustness_polish.py:93", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_causal_robustness_polish.py:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9fe5d1b877f15e3", "name": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/format.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/format.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee05493d7ec2c649", "name": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/queries.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/queries.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b99c8e3d4229cc4", "name": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/tz/gps_tz_backfill.py:119", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/tz/gps_tz_backfill.py: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-18e75a234dcccfab", "name": "Commented-code block (7 lines) in audit/re-audit-2026-06-07/etl/whoop_etl.py:602", "shortDescription": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-06-07/etl/whoop_etl.py:602"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ee45857b2f0886e", "name": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-06-07/etl/whoop_etl.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-06-07/etl/whoop_etl.py:122"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e1125b5f90af90c", "name": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/garmin_etl.py:841", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/garmin_etl.py:841"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14801b25b741f57a", "name": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/hrv_backfill_check.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/hrv_backfill_check.py: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-fe801825fc0e26dc", "name": "Commented-code block (9 lines) in audit/re-audit-2026-06-07/etl/eight_sleep_etl.py:37", "shortDescription": {"text": "Commented-code block (9 lines) in audit/re-audit-2026-06-07/etl/eight_sleep_etl.py:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28c8ffa3a69316af", "name": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/etl/cronometer_import.py:57", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/etl/cronometer_import.py:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be6a7215528caa65", "name": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-06-07/stats/hrv_analysis.py:165", "shortDescription": {"text": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-06-07/stats/hrv_analysis.py:165"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e980a28b3996fb7", "name": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/hrv_analysis.py:171", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/hrv_analysis.py:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a9e075a0fd34201", "name": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-06-07/stats/hrv_predict.py:349", "shortDescription": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-06-07/stats/hrv_predict.py:349"}, "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-e32c5ca1057503bc", "name": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/stats/hrv_predict.py:337", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/stats/hrv_predict.py: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-384daf5f9a89bd05", "name": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/causal_inference.py:140", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/causal_inference.py:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b688f21dcea34817", "name": "Commented-code block (6 lines) in audit/tz-bundle/gps_tz_backfill.py:106", "shortDescription": {"text": "Commented-code block (6 lines) in audit/tz-bundle/gps_tz_backfill.py: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-d6ccee0b3a33d096", "name": "Commented-code block (5 lines) in audit/units-bundle/format.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in audit/units-bundle/format.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-057ac64c4437c9d1", "name": "Commented-code block (7 lines) in audit/etl-bundle/whoop_etl.py:567", "shortDescription": {"text": "Commented-code block (7 lines) in audit/etl-bundle/whoop_etl.py:567"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cdbbbde6eda1472e", "name": "Network/subprocess call without timeout or try/except \u2014 audit/etl-bundle/whoop_etl.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/etl-bundle/whoop_etl.py:122"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d5ee45fcdba5ef7", "name": "Commented-code block (5 lines) in audit/etl-bundle/garmin_etl.py:895", "shortDescription": {"text": "Commented-code block (5 lines) in audit/etl-bundle/garmin_etl.py:895"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fe8495fa23cee85", "name": "Commented-code block (6 lines) in audit/etl-bundle/hrv_backfill_check.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in audit/etl-bundle/hrv_backfill_check.py: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-c9d15959b9571781", "name": "Commented-code block (7 lines) in audit/etl-bundle/eight_sleep_etl.py:234", "shortDescription": {"text": "Commented-code block (7 lines) in audit/etl-bundle/eight_sleep_etl.py:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8210cdad8ab6205a", "name": "Legacy-named symbol `_behavioral_v1` in audit/stats-bundle/hrv_analysis.py:126", "shortDescription": {"text": "Legacy-named symbol `_behavioral_v1` in audit/stats-bundle/hrv_analysis.py:126"}, "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-fa9742dd831e048e", "name": "Commented-code block (5 lines) in audit/stats-bundle/hrv_analysis.py:146", "shortDescription": {"text": "Commented-code block (5 lines) in audit/stats-bundle/hrv_analysis.py:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6ad4929785a58ec", "name": "Legacy-named symbol `dir_acc_legacy` in audit/stats-bundle/hrv_predict.py:336", "shortDescription": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/stats-bundle/hrv_predict.py:336"}, "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-d494c5180632b62d", "name": "Commented-code block (6 lines) in audit/stats-bundle/hrv_predict.py:324", "shortDescription": {"text": "Commented-code block (6 lines) in audit/stats-bundle/hrv_predict.py:324"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c6be5af84ec8d7d", "name": "Commented-code block (6 lines) in audit/stats-bundle/causal_inference.py:157", "shortDescription": {"text": "Commented-code block (6 lines) in audit/stats-bundle/causal_inference.py:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea2d3c110bf30d0a", "name": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/units/format.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/units/format.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa0983cce7b6043b", "name": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/units/queries.ts:63", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/units/queries.ts: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-cb7bb84758d9cc2a", "name": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/tz/gps_tz_backfill.py:103", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/tz/gps_tz_backfill.py:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecf8a92506e8854a", "name": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/spotify_etl.py:675", "shortDescription": {"text": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/spotify_etl.py:675"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10d0da6273331132", "name": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/whoop_etl.py:567", "shortDescription": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/whoop_etl.py:567"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10214315bf5321c3", "name": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-05-26/etl/whoop_etl.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-05-26/etl/whoop_etl.py:122"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b63b08ae9698e24", "name": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/garmin_etl.py:794", "shortDescription": {"text": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/garmin_etl.py:794"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-240629210748ac89", "name": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/etl/hrv_backfill_check.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/etl/hrv_backfill_check.py: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-b0d8e8f345cf1a3e", "name": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/eight_sleep_etl.py:234", "shortDescription": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/eight_sleep_etl.py:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ac2703ecdd3afda", "name": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-05-26/stats/hrv_analysis.py:153", "shortDescription": {"text": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-05-26/stats/hrv_analysis.py: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-0bc4a5462bf7841c", "name": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/hrv_analysis.py:159", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/hrv_analysis.py:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-294e0808d8a67717", "name": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-05-26/stats/hrv_predict.py:349", "shortDescription": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-05-26/stats/hrv_predict.py:349"}, "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-a38e0439eb8cdbc9", "name": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/stats/hrv_predict.py:337", "shortDescription": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/stats/hrv_predict.py: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-55d793b96520db0a", "name": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/causal_inference.py:140", "shortDescription": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/causal_inference.py:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmyfitnesspal_import.py:parse_date, whoop_journal_import.py:parse_date, audit/re-audit-2026-06-07/etl/myfitnesspal_import.py:parse_date, audit/re-audit-2026-06-07/etl/whoop_journal_import.py:parse_date\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmyfitnesspal_import.py:normalise_col, audit/re-audit-2026-06-07/etl/myfitnesspal_import.py:normalise_col, audit/etl-bundle/myfitnesspal_import.py:normalise_col, audit/re-audit-2026-05-26/etl/myfitnesspal_import.py:normalise_col\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmyfitnesspal_import.py:import_nutrition, audit/re-audit-2026-06-07/etl/myfitnesspal_import.py:import_nutrition\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nwhoop_journal_watcher.py:get_csv_files, audit/re-audit-2026-06-07/etl/whoop_journal_watcher.py:get_csv_files, audit/etl-bundle/whoop_journal_watcher.py:get_csv_files\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18175"}, "properties": {"repository": "rileybleeker/Onyx", "repoUrl": "https://github.com/rileybleeker/Onyx", "branch": "main"}, "results": [{"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: rileybleeker/Onyx"}, "properties": {"repobilityId": 355268, "scanner": "foundry_dataset", "fingerprint": "917f5ea0fc8a66d76f03096d8159083a88736e1a7c97fb2d8c137d47c5c3f151", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"keys": ["ui_or_frontend", "dependency_or_build", "claimed_resolved_with_verification_signal", "bug_fix", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "test_ci_gap", "deployment_env_gap", "source_or_other", "docs_or_claims", "test_or_ci", "human_reported_issue_then_verified_fix_attempt", "ui_workflow", "verification_or_tests", "human_reported_issue_then_fix_attempt", "claimed_resolved_unverified", "blueprint_human_gap_alignment", "partial blueprint fit", "blueprint_human_gap_disagreement", "mostly follows blueprint"], "count": 20, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 101, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 35, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 58, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 35, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "rileybleeker/Onyx#1", "issue_number": "1", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "rileybleeker/Onyx", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-1e55c71339ad4849", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 5, "docs_or_claims": 5, "ui_or_frontend": 150, "source_or_other": 5, "dependency_or_build": 10}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rileybleeker/Onyx#1\nRepo: rileybleeker/Onyx\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 101\nNode types: {'pr_file': 35, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 35, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 6, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 30, 'dependency_or_build': 3, '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, 'deployment_env_gap': 1, 'source_or_other': 1, 'docs_or_claims': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'ui_workflow': 1, 'verification_or_tests': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/rileybleeker/Onyx", "source_id": "graph-query-motif_query-7d6c535380db868a", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "rileybleeker/Onyx", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: rileybleeker/Onyx"}, "properties": {"repobilityId": 340703, "scanner": "foundry_dataset", "fingerprint": "de7d9c5443eb5865a9a3eb4f1bf4cf0fa46fd51054983522cc1ab77df867fa6b", "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": ["ui_or_frontend", "dependency_or_build", "claimed_resolved_with_verification_signal", "bug_fix", "thread_has_human_issue_and_fix_context", "issue_or_pull_request_thread", "test_ci_gap", "deployment_env_gap", "source_or_other", "docs_or_claims", "test_or_ci", "human_reported_issue_then_verified_fix_attempt", "ui_workflow", "verification_or_tests", "human_reported_issue_then_fix_attempt", "claimed_resolved_unverified", "blueprint_human_gap_alignment", "partial blueprint fit", "blueprint_human_gap_disagreement", "mostly follows blueprint"], "count": 20, "_omitted": "large_dict"}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_unverified": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 101, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 35, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 6, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 2, "comment_chain_links_commit": 6, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 58, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 35, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "rileybleeker/Onyx#1", "issue_number": "1", "quality_tiers": {"assumption_check": 2, "weak_supervision": 4}, "repo_full_name": "rileybleeker/Onyx", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-e9c764e53c6f9582", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 5, "docs_or_claims": 5, "ui_or_frontend": 150, "source_or_other": 5, "dependency_or_build": 10}}, "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: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\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: rileybleeker/Onyx\nThread: rileybleeker/Onyx#1\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: rileybleeker/Onyx#1\nRepo: rileybleeker/Onyx\nIssue/PR number: 1\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 101\nNode types: {'pr_file': 35, 'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 35, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 6, 'chain_has_link_quality': 6, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_issue_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 30, 'dependency_or_build': 3, '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, 'deployment_env_gap': 1, 'source_or_other': 1, 'docs_or_claims': 1, 'test_or_ci': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'ui_workflow': 1, 'verification_or_tests': 1, 'human_reported_issue_then_fix_attempt': 1, 'claimed_resolved_unverified': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'claimed_resolved_unverified': 2}\nQuality tiers: {'weak_supervision': 4, 'assumption_check': 2}\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/rileybleeker/Onyx", "source_id": "graph-query-motif_query-99b2bfdce6087d75", "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": "rileybleeker/Onyx", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-c2859065754b21ce", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "c2859065754b21ce", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spotify_etl.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d39095255983c126", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "d39095255983c126", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spotify_etl.py:121"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca08d2388ee90079", "level": "note", "message": {"text": "Possibly dead Python function: do"}, "properties": {"repobilityId": "d0af2d0dfdb3a59f", "scanner": "scanner-primary", "fingerprint": "ca08d2388ee90079", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "spotify_etl.py:253"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3668ceb57cc64ed7", "level": "note", "message": {"text": "Possibly dead Python function: do"}, "properties": {"repobilityId": "d0af2d0dfdb3a59f", "scanner": "scanner-primary", "fingerprint": "3668ceb57cc64ed7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tanita_etl.py:273"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-419e0603f594dcf2", "level": "note", "message": {"text": "Possibly dead Python function: to_cycle_et_date_str"}, "properties": {"repobilityId": "c02e242f96ee8fc0", "scanner": "scanner-primary", "fingerprint": "419e0603f594dcf2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hrv_analysis.py:577"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18fb119c7b30dd4e", "level": "note", "message": {"text": "Possibly dead Python function: lap_metrics"}, "properties": {"repobilityId": "0f5c2fcaf249711c", "scanner": "scanner-primary", "fingerprint": "18fb119c7b30dd4e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hrv_analysis.py:917"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d8ede41466d90ea", "level": "note", "message": {"text": "Possibly dead Python function: objective"}, "properties": {"repobilityId": "b2ca8f96950eb149", "scanner": "scanner-primary", "fingerprint": "1d8ede41466d90ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "hrv_analysis.py:3069"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f50217cc1ed8f0a5", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "f50217cc1ed8f0a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_etl.py:70"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4e04a28507dfccf", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "b4e04a28507dfccf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_etl.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b37aa8feb3cc0c59", "level": "note", "message": {"text": "Possibly dead Python function: do"}, "properties": {"repobilityId": "d0af2d0dfdb3a59f", "scanner": "scanner-primary", "fingerprint": "b37aa8feb3cc0c59", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_etl.py:207"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5bbd4f56013849d6", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "5bbd4f56013849d6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "myfitnesspal_email.py:81"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32e3ec3796481eb6", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "32e3ec3796481eb6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "myfitnesspal_email.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcbfdc51507cc153", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "bcbfdc51507cc153", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "myfitnesspal_email.py:92"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6a501e04d016544", "level": "note", "message": {"text": "Possibly dead Python function: parse_offset_str"}, "properties": {"repobilityId": "2f0adffb99220837", "scanner": "scanner-primary", "fingerprint": "d6a501e04d016544", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_tz_backfill.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8584ff486617c36", "level": "note", "message": {"text": "Possibly dead Python function: handle_starttag"}, "properties": {"repobilityId": "3bf216d149959ebf", "scanner": "scanner-primary", "fingerprint": "c8584ff486617c36", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_journal_email.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3044b1828a1f4607", "level": "note", "message": {"text": "Possibly dead Python function: handle_data"}, "properties": {"repobilityId": "3a673a278f4fc1e6", "scanner": "scanner-primary", "fingerprint": "3044b1828a1f4607", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_journal_email.py:89"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2d4f8c6a07f9b34", "level": "note", "message": {"text": "Possibly dead Python function: handle_endtag"}, "properties": {"repobilityId": "7eb6f3decafc1766", "scanner": "scanner-primary", "fingerprint": "d2d4f8c6a07f9b34", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoop_journal_email.py:93"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-66bcc1e6a33f3577", "level": "note", "message": {"text": "Possibly dead Python function: download_garmin"}, "properties": {"repobilityId": "647e5d3f137fad91", "scanner": "scanner-primary", "fingerprint": "66bcc1e6a33f3577", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3038135ec668ee79", "level": "note", "message": {"text": "Possibly dead Python function: download_whoop"}, "properties": {"repobilityId": "9bad5dc7034d3b24", "scanner": "scanner-primary", "fingerprint": "3038135ec668ee79", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-489a94186e3428f4", "level": "note", "message": {"text": "Possibly dead Python function: download_spotify"}, "properties": {"repobilityId": "156074782f5cd8d4", "scanner": "scanner-primary", "fingerprint": "489a94186e3428f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec80666bc1974d69", "level": "note", "message": {"text": "Possibly dead Python function: download_tanita"}, "properties": {"repobilityId": "04e8f58255fd49de", "scanner": "scanner-primary", "fingerprint": "ec80666bc1974d69", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:130"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9bba8dc0e750e0b", "level": "note", "message": {"text": "Possibly dead Python function: download_cronometer"}, "properties": {"repobilityId": "7a29bc3e93b3c81f", "scanner": "scanner-primary", "fingerprint": "c9bba8dc0e750e0b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:154"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9a720d2221967b9", "level": "note", "message": {"text": "Possibly dead Python function: upload_garmin"}, "properties": {"repobilityId": "cd7c526e3715441a", "scanner": "scanner-primary", "fingerprint": "e9a720d2221967b9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91083781de5cc3af", "level": "note", "message": {"text": "Possibly dead Python function: upload_whoop"}, "properties": {"repobilityId": "db863eeb75ec5e4a", "scanner": "scanner-primary", "fingerprint": "91083781de5cc3af", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4caf473c2e882860", "level": "note", "message": {"text": "Possibly dead Python function: upload_spotify"}, "properties": {"repobilityId": "1bcbeb78b5af5bed", "scanner": "scanner-primary", "fingerprint": "4caf473c2e882860", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ci_token_helper.py:222"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6879602564e2a76f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CommandPalette.tsx:144"}, "properties": {"repobilityId": "6c9536975aad41c4", "scanner": "scanner-primary", "fingerprint": "6879602564e2a76f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-80fc690eed16539e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MobileNav.tsx:187"}, "properties": {"repobilityId": "de18741bbd09f692", "scanner": "scanner-primary", "fingerprint": "80fc690eed16539e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7ffe6f86a3bc6700", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/MobileNav.tsx:181"}, "properties": {"repobilityId": "216bca210f405959", "scanner": "scanner-primary", "fingerprint": "7ffe6f86a3bc6700", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-1333eda0ce0996d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StatCard.tsx:54"}, "properties": {"repobilityId": "5dda19009c9ee2b7", "scanner": "scanner-primary", "fingerprint": "1333eda0ce0996d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e2cb2eca86b65e22", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/Sidebar.tsx:62"}, "properties": {"repobilityId": "d939641c15c40bf5", "scanner": "scanner-primary", "fingerprint": "e2cb2eca86b65e22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a127bb6777d0d06", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/Sidebar.tsx:56"}, "properties": {"repobilityId": "91dd697a682d47d7", "scanner": "scanner-primary", "fingerprint": "6a127bb6777d0d06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-3d7b8fc6a82934ce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/StackEditorModal.tsx:212"}, "properties": {"repobilityId": "99863decdc5fde2f", "scanner": "scanner-primary", "fingerprint": "3d7b8fc6a82934ce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7267e129ed1ebefe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/KpiTile.tsx:74"}, "properties": {"repobilityId": "f2af56080b7318a2", "scanner": "scanner-primary", "fingerprint": "7267e129ed1ebefe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4be3ba687c742100", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/SectionHeader.tsx:62"}, "properties": {"repobilityId": "bd67572bd33f1a80", "scanner": "scanner-primary", "fingerprint": "4be3ba687c742100", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c9d67fc8bfda6176", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/spotify/SpotifyClient.tsx:990"}, "properties": {"repobilityId": "33b5642665c00cd7", "scanner": "scanner-primary", "fingerprint": "c9d67fc8bfda6176", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9a394d95fa0b9c8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/habits/HabitsClient.tsx:634"}, "properties": {"repobilityId": "a607da13e2a06b08", "scanner": "scanner-primary", "fingerprint": "9a394d95fa0b9c8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-175277236b3746a3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:587"}, "properties": {"repobilityId": "30eb3fbf59f25270", "scanner": "scanner-primary", "fingerprint": "175277236b3746a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a6271aa3df289730", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:803"}, "properties": {"repobilityId": "407041f15f047b11", "scanner": "scanner-primary", "fingerprint": "a6271aa3df289730", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-998a4f63ff2e0384", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/nutrition/NutritionClient.tsx:546"}, "properties": {"repobilityId": "bfc8c0b846869e7b", "scanner": "scanner-primary", "fingerprint": "998a4f63ff2e0384", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95eecb4adae800e5", "level": "warning", "message": {"text": "Privileged port 13 in use"}, "properties": {"repobilityId": "79d721e4d6f64798", "scanner": "scanner-primary", "fingerprint": "95eecb4adae800e5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "audit/re-audit-2026-06-07/etl/workflows/monthly-audit.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90f8d113d3a5e398", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1117b2255666bf7f", "scanner": "scanner-primary", "fingerprint": "90f8d113d3a5e398", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/hrv-prediction.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-90f8d113d3a5e398", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1117b2255666bf7f", "scanner": "scanner-primary", "fingerprint": "90f8d113d3a5e398", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/hrv-prediction.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-90f8d113d3a5e398", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e57a5de5db3c5df", "scanner": "scanner-primary", "fingerprint": "90f8d113d3a5e398", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/hrv-prediction.yml"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-0939256d8da25ba1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b09c63d29b85ef2b", "scanner": "scanner-primary", "fingerprint": "0939256d8da25ba1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/stats-pr-check.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-033105622a58760a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "82c52db791657ab0", "scanner": "scanner-primary", "fingerprint": "033105622a58760a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/monthly-audit.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-70d7afce4578b9c5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d24131f9e4ea3205", "scanner": "scanner-primary", "fingerprint": "70d7afce4578b9c5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/hrv-retrain-on-backfill.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-70d7afce4578b9c5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "861b4e68d0059c6a", "scanner": "scanner-primary", "fingerprint": "70d7afce4578b9c5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/hrv-retrain-on-backfill.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-fc180ed796895f59", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fa8599e294e2ae3c", "scanner": "scanner-primary", "fingerprint": "fc180ed796895f59", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-test.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-36e3e6d6292f4343", "level": "note", "message": {"text": "Very large file: hrv_analysis.py (4903 lines)"}, "properties": {"repobilityId": "b16e807266694bd3", "scanner": "scanner-primary", "fingerprint": "36e3e6d6292f4343", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ccfb395b6061ecde", "level": "note", "message": {"text": "Very large file: causal_inference.py (1515 lines)"}, "properties": {"repobilityId": "aef47fb06bea3795", "scanner": "scanner-primary", "fingerprint": "ccfb395b6061ecde", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f76dd8f101f308d7", "level": "note", "message": {"text": "Very large file: frontend/src/app/spotify/SpotifyClient.tsx (1169 lines)"}, "properties": {"repobilityId": "0c7ea0d59a8df566", "scanner": "scanner-primary", "fingerprint": "f76dd8f101f308d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a1fa90eac5045a5e", "level": "note", "message": {"text": "Very large file: frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx (2787 lines)"}, "properties": {"repobilityId": "811edddf6e5559ea", "scanner": "scanner-primary", "fingerprint": "a1fa90eac5045a5e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0fa3691756163fca", "level": "note", "message": {"text": "Very large file: frontend/src/app/sleep/SleepClient.tsx (903 lines)"}, "properties": {"repobilityId": "30cb95645930e6a4", "scanner": "scanner-primary", "fingerprint": "0fa3691756163fca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-091e5942922611f7", "level": "note", "message": {"text": "Very large file: frontend/src/app/supplements/SupplementsClient.tsx (1178 lines)"}, "properties": {"repobilityId": "4211680eabff0c5d", "scanner": "scanner-primary", "fingerprint": "091e5942922611f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8b8b4ac1a075787", "level": "note", "message": {"text": "Very large file: frontend/src/lib/queries.ts (1532 lines)"}, "properties": {"repobilityId": "2e0214256f3a8562", "scanner": "scanner-primary", "fingerprint": "f8b8b4ac1a075787", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c10c0dc3d0937645", "level": "note", "message": {"text": "Very large file: audit/re-audit-2026-06-07/stats/hrv_analysis.py (4480 lines)"}, "properties": {"repobilityId": "5cd01968829cfc22", "scanner": "scanner-primary", "fingerprint": "c10c0dc3d0937645", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ce21590faebe37a", "level": "note", "message": {"text": "Very large file: audit/re-audit-2026-06-07/stats/causal_inference.py (1215 lines)"}, "properties": {"repobilityId": "224984f64081fdfc", "scanner": "scanner-primary", "fingerprint": "8ce21590faebe37a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7c58f99dfdd65917", "level": "note", "message": {"text": "Very large file: audit/stats-bundle/hrv_analysis.py (3913 lines)"}, "properties": {"repobilityId": "1acf0307ab1d2367", "scanner": "scanner-primary", "fingerprint": "7c58f99dfdd65917", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-efeb9d18cedab390", "level": "note", "message": {"text": "Very large file: audit/re-audit-2026-05-26/stats/hrv_analysis.py (4252 lines)"}, "properties": {"repobilityId": "916fb454011cb1f9", "scanner": "scanner-primary", "fingerprint": "efeb9d18cedab390", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-571c1545e15b442d", "level": "note", "message": {"text": "Very large file: audit/re-audit-2026-05-26/stats/causal_inference.py (1155 lines)"}, "properties": {"repobilityId": "9965931402858572", "scanner": "scanner-primary", "fingerprint": "571c1545e15b442d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "45e82775a40ea579", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ea01c283bb51a7e1", "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": "664ae3f5743e572a", "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": "d0ff5588671b9f55", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "75bc4b57ccfd9e34", "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": "ec9b612391e36cec", "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": "3bc13e26679c8271", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ff39a226c34908a", "level": "none", "message": {"text": "Commented-code block (9 lines) in journal_etl.py:403"}, "properties": {"repobilityId": "e2dc60dbccb7269e", "scanner": "scanner-primary", "fingerprint": "3ff39a226c34908a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-680ed747b33ce8a6", "level": "none", "message": {"text": "Commented-code block (8 lines) in spotify_etl.py:243"}, "properties": {"repobilityId": "770c7d1e21911345", "scanner": "scanner-primary", "fingerprint": "680ed747b33ce8a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-377ee5250beddb75", "level": "none", "message": {"text": "Commented-code block (13 lines) in audit_runner.py:84"}, "properties": {"repobilityId": "8d10b03deb9e0494", "scanner": "scanner-primary", "fingerprint": "377ee5250beddb75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3da5e80d3c76343", "level": "none", "message": {"text": "Commented-code block (6 lines) in whoop_journal_import.py:293"}, "properties": {"repobilityId": "137a59489104b76c", "scanner": "scanner-primary", "fingerprint": "e3da5e80d3c76343", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d55d028ca84f2039", "level": "note", "message": {"text": "Legacy-named symbol `_behavioral_v1` in hrv_analysis.py:165"}, "properties": {"repobilityId": "cfb31b19c63d3442", "scanner": "scanner-primary", "fingerprint": "d55d028ca84f2039", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ac1be4fb4ae15095", "level": "none", "message": {"text": "Commented-code block (5 lines) in hrv_analysis.py:171"}, "properties": {"repobilityId": "61ee6ce29fef6e15", "scanner": "scanner-primary", "fingerprint": "ac1be4fb4ae15095", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-827bead7010d955f", "level": "none", "message": {"text": "Commented-code block (7 lines) in whoop_etl.py:198"}, "properties": {"repobilityId": "e1591c36e4f998fd", "scanner": "scanner-primary", "fingerprint": "827bead7010d955f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdbbadef3531facd", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 whoop_etl.py:125"}, "properties": {"repobilityId": "0d60dff52aed6225", "scanner": "scanner-primary", "fingerprint": "cdbbadef3531facd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-afc285ecbb355844", "level": "none", "message": {"text": "Commented-code block (6 lines) in gps_tz_backfill.py:119"}, "properties": {"repobilityId": "1aeb387d26e6091f", "scanner": "scanner-primary", "fingerprint": "afc285ecbb355844", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69ba62c4a505a54b", "level": "note", "message": {"text": "Legacy-named symbol `dir_acc_legacy` in hrv_predict.py:349"}, "properties": {"repobilityId": "a3f3a09d2797b26b", "scanner": "scanner-primary", "fingerprint": "69ba62c4a505a54b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1dff3ef892421125", "level": "none", "message": {"text": "Commented-code block (6 lines) in hrv_predict.py:337"}, "properties": {"repobilityId": "80528290223094bf", "scanner": "scanner-primary", "fingerprint": "1dff3ef892421125", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc649a3dfa62c701", "level": "none", "message": {"text": "Commented-code block (6 lines) in garmin_etl.py:846"}, "properties": {"repobilityId": "38602d6a241f8e9c", "scanner": "scanner-primary", "fingerprint": "bc649a3dfa62c701", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d04bc4b85cb10dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in hrv_backfill_check.py:51"}, "properties": {"repobilityId": "e489cf87922a65d0", "scanner": "scanner-primary", "fingerprint": "8d04bc4b85cb10dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25826e267bfe1703", "level": "none", "message": {"text": "Commented-code block (9 lines) in eight_sleep_etl.py:39"}, "properties": {"repobilityId": "c53386b216d507ef", "scanner": "scanner-primary", "fingerprint": "25826e267bfe1703", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f6746afcdf6c92d", "level": "none", "message": {"text": "Commented-code block (5 lines) in cronometer_import.py:57"}, "properties": {"repobilityId": "2fea3a8e7ed5e6df", "scanner": "scanner-primary", "fingerprint": "5f6746afcdf6c92d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c385f381f2d769a7", "level": "none", "message": {"text": "Commented-code block (11 lines) in causal_inference.py:129"}, "properties": {"repobilityId": "457e6fa810de4fb2", "scanner": "scanner-primary", "fingerprint": "c385f381f2d769a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f32bd8d58446175", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/playwright.config.ts:5"}, "properties": {"repobilityId": "2c093999f8b673b3", "scanner": "scanner-primary", "fingerprint": "4f32bd8d58446175", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26dd281d4c81922b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/middleware.ts:14"}, "properties": {"repobilityId": "a3e2d85c541691de", "scanner": "scanner-primary", "fingerprint": "26dd281d4c81922b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-421b9d138b191d66", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/DeferredMount.tsx:5"}, "properties": {"repobilityId": "5198368e4f1b0599", "scanner": "scanner-primary", "fingerprint": "421b9d138b191d66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ea2e3c0f4f1a924", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CustomSupplementFlow.tsx:243"}, "properties": {"repobilityId": "4c5976c149360032", "scanner": "scanner-primary", "fingerprint": "9ea2e3c0f4f1a924", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d725dee8eb8cc1d3", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/caffeine/page.tsx:4"}, "properties": {"repobilityId": "593a5c6bad40beec", "scanner": "scanner-primary", "fingerprint": "d725dee8eb8cc1d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56e5150187b24611", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/caffeine/CaffeineClient.tsx:91"}, "properties": {"repobilityId": "bd8a3e86ea169815", "scanner": "scanner-primary", "fingerprint": "56e5150187b24611", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d459544e5bfb0d52", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/spotify/SpotifyLoader.tsx:17"}, "properties": {"repobilityId": "05cc4f6cf1e6777c", "scanner": "scanner-primary", "fingerprint": "d459544e5bfb0d52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7de1e8e00f219f7b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/spotify/page.tsx:6"}, "properties": {"repobilityId": "5eeee4b4cc0e7618", "scanner": "scanner-primary", "fingerprint": "7de1e8e00f219f7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70fcb90be6994482", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/spotify/SpotifyClient.tsx:128"}, "properties": {"repobilityId": "1e8ebaa98e4d9a27", "scanner": "scanner-primary", "fingerprint": "70fcb90be6994482", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4db639221205885e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/habits/HabitsClient.tsx:42"}, "properties": {"repobilityId": "1a6ee4fac91c300e", "scanner": "scanner-primary", "fingerprint": "4db639221205885e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67fe22073310abfa", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/analytics/hrv/HrvAnalysisClient.tsx:30"}, "properties": {"repobilityId": "92f139fb285ad6a1", "scanner": "scanner-primary", "fingerprint": "67fe22073310abfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c5d282774e9586f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/app/analytics/hrv/page.tsx:5"}, "properties": {"repobilityId": "abf59da579b75f1b", "scanner": "scanner-primary", "fingerprint": "4c5d282774e9586f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12c9832556319bac", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/analytics/travel/page.tsx:172"}, "properties": {"repobilityId": "ebae689d5e184180", "scanner": "scanner-primary", "fingerprint": "12c9832556319bac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f88b043cb96ccf9b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/bland-altman/page.tsx:4"}, "properties": {"repobilityId": "02a17d7e5d630b38", "scanner": "scanner-primary", "fingerprint": "f88b043cb96ccf9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69a309e1826da61f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/bland-altman/BlandAltmanClient.tsx:114"}, "properties": {"repobilityId": "9e2567887e0479f0", "scanner": "scanner-primary", "fingerprint": "69a309e1826da61f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7110e2dae7adfa1", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/api/habits/complete/route.ts:47"}, "properties": {"repobilityId": "8863c192339f3334", "scanner": "scanner-primary", "fingerprint": "c7110e2dae7adfa1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc432e1cae218b70", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/complete/route.ts:156"}, "properties": {"repobilityId": "e2081d2b9fe51b9b", "scanner": "scanner-primary", "fingerprint": "dc432e1cae218b70", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6fbe550102364349", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/app/api/habits/sync/route.ts:189"}, "properties": {"repobilityId": "cc8c2b5a8f95fc10", "scanner": "scanner-primary", "fingerprint": "6fbe550102364349", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c906782fb23a43e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/sync/route.ts:31"}, "properties": {"repobilityId": "280687e1c29afafd", "scanner": "scanner-primary", "fingerprint": "5c906782fb23a43e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0f23dd6cd70a9fab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/habits/list/route.ts:20"}, "properties": {"repobilityId": "23f514ef4656ed97", "scanner": "scanner-primary", "fingerprint": "0f23dd6cd70a9fab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58a8dd2914ffffe1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/api/chat/route.ts:687"}, "properties": {"repobilityId": "cf8bb7dcaced5091", "scanner": "scanner-primary", "fingerprint": "58a8dd2914ffffe1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d56cc94f7873d3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/api/status/route.ts:51"}, "properties": {"repobilityId": "f27329c1e9d0d3ac", "scanner": "scanner-primary", "fingerprint": "3d56cc94f7873d3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30e13423ec965bd0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/api/meals/route.ts:84"}, "properties": {"repobilityId": "c0631f65c49f1fbb", "scanner": "scanner-primary", "fingerprint": "30e13423ec965bd0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-073d032dcc81d302", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/whoop/WhoopClient.tsx:30"}, "properties": {"repobilityId": "fc8934e3f3a203c9", "scanner": "scanner-primary", "fingerprint": "073d032dcc81d302", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7563b1a587810830", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/whoop/page.tsx:6"}, "properties": {"repobilityId": "6d700b7bf9bc2123", "scanner": "scanner-primary", "fingerprint": "7563b1a587810830", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-401970300026fafd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepClient.tsx:40"}, "properties": {"repobilityId": "efa92a71b53c4e36", "scanner": "scanner-primary", "fingerprint": "401970300026fafd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32c73f735a72851a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/sleep/SleepLoader.tsx:16"}, "properties": {"repobilityId": "4503c9f1da7aa668", "scanner": "scanner-primary", "fingerprint": "32c73f735a72851a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d6d128dc1d77fb8", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/sleep/page.tsx:7"}, "properties": {"repobilityId": "f5bd1a9d7e670586", "scanner": "scanner-primary", "fingerprint": "2d6d128dc1d77fb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b02089310a0e1c3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/sleep/page.tsx:23"}, "properties": {"repobilityId": "0bd28aeada6e6740", "scanner": "scanner-primary", "fingerprint": "b02089310a0e1c3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1bff9e690942036", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/supplements/SupplementsClient.tsx:158"}, "properties": {"repobilityId": "1e258864fc59e888", "scanner": "scanner-primary", "fingerprint": "f1bff9e690942036", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dc8872612d75959", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/supplements/SupplementsClient.tsx:464"}, "properties": {"repobilityId": "61a1075fef7729d2", "scanner": "scanner-primary", "fingerprint": "8dc8872612d75959", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7c108d49477046c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/heart/HeartClient.tsx:20"}, "properties": {"repobilityId": "40b9ae4e798cbed6", "scanner": "scanner-primary", "fingerprint": "f7c108d49477046c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2967f59402df3598", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/heart/page.tsx:6"}, "properties": {"repobilityId": "1b462edaa9e0870b", "scanner": "scanner-primary", "fingerprint": "2967f59402df3598", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8a0acebb82eea1c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/app/status/page.tsx:231"}, "properties": {"repobilityId": "5ffe6c8ee2db2cd0", "scanner": "scanner-primary", "fingerprint": "e8a0acebb82eea1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22e9a04d151c30be", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/activities/page.tsx:7"}, "properties": {"repobilityId": "8f11a7be1812e34f", "scanner": "scanner-primary", "fingerprint": "22e9a04d151c30be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3fcf07c9e198651", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesClient.tsx:40"}, "properties": {"repobilityId": "f47cd039a4c1c985", "scanner": "scanner-primary", "fingerprint": "f3fcf07c9e198651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0faaf17ca0cc7980", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/app/activities/ActivitiesClient.tsx:400"}, "properties": {"repobilityId": "1ddf9628588878e8", "scanner": "scanner-primary", "fingerprint": "0faaf17ca0cc7980", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e747db9c799b396", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/activities/ActivitiesLoader.tsx:16"}, "properties": {"repobilityId": "2fada9bc28451669", "scanner": "scanner-primary", "fingerprint": "3e747db9c799b396", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-976e11d9cddf85ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/nutrition/NutritionLoader.tsx:16"}, "properties": {"repobilityId": "e33691735119602a", "scanner": "scanner-primary", "fingerprint": "976e11d9cddf85ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da1a870885e55795", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/app/nutrition/NutritionClient.tsx:132"}, "properties": {"repobilityId": "fe398dd8048f55ad", "scanner": "scanner-primary", "fingerprint": "da1a870885e55795", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-263f55b0e78e56d5", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/app/nutrition/page.tsx:7"}, "properties": {"repobilityId": "175c10871d4ef1a0", "scanner": "scanner-primary", "fingerprint": "263f55b0e78e56d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28a2d97b5d848f9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/queries-hrv.ts:4"}, "properties": {"repobilityId": "01e9e38922dd8c8f", "scanner": "scanner-primary", "fingerprint": "28a2d97b5d848f9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-417c19e7120951ac", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/lib/format.ts:6"}, "properties": {"repobilityId": "4d46625a44d4ce10", "scanner": "scanner-primary", "fingerprint": "417c19e7120951ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13c852a3b363fc6e", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/lib/spotify-server.ts:217"}, "properties": {"repobilityId": "0b5d8cf3ae9fb7da", "scanner": "scanner-primary", "fingerprint": "13c852a3b363fc6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbd0f8592790a24e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/spotify-server.ts:75"}, "properties": {"repobilityId": "2a9634f7b054f9a9", "scanner": "scanner-primary", "fingerprint": "bbd0f8592790a24e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ae864ff25e63c2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/supplement-stacks.ts:63"}, "properties": {"repobilityId": "a6ee6a75efa638eb", "scanner": "scanner-primary", "fingerprint": "9ae864ff25e63c2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4a1c5de244aaabb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/dsld.ts:69"}, "properties": {"repobilityId": "3a098758fbc6d42c", "scanner": "scanner-primary", "fingerprint": "c4a1c5de244aaabb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c63376802fdccff6", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/lib/queries.ts:28"}, "properties": {"repobilityId": "d6bb0475e4b29c15", "scanner": "scanner-primary", "fingerprint": "c63376802fdccff6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1229f367e29a57e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/e2e/smoke.spec.ts:22"}, "properties": {"repobilityId": "8803ab00ad8d46b7", "scanner": "scanner-primary", "fingerprint": "1229f367e29a57e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d264047108318082", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_sarimax_asfreq.py:91"}, "properties": {"repobilityId": "9ba95fff8bed6efc", "scanner": "scanner-primary", "fingerprint": "d264047108318082", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75f710cbd929318a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_causal_robustness_polish.py:93"}, "properties": {"repobilityId": "46cb1ed32ea13c9c", "scanner": "scanner-primary", "fingerprint": "75f710cbd929318a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9fe5d1b877f15e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/format.ts:6"}, "properties": {"repobilityId": "f1882f3c9f825640", "scanner": "scanner-primary", "fingerprint": "b9fe5d1b877f15e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee05493d7ec2c649", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/units/queries.ts:35"}, "properties": {"repobilityId": "e11fbc89f36f6b19", "scanner": "scanner-primary", "fingerprint": "ee05493d7ec2c649", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b99c8e3d4229cc4", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/tz/gps_tz_backfill.py:119"}, "properties": {"repobilityId": "6874e0118cb8de84", "scanner": "scanner-primary", "fingerprint": "2b99c8e3d4229cc4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18e75a234dcccfab", "level": "none", "message": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-06-07/etl/whoop_etl.py:602"}, "properties": {"repobilityId": "85d3fff5900aed5f", "scanner": "scanner-primary", "fingerprint": "18e75a234dcccfab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ee45857b2f0886e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-06-07/etl/whoop_etl.py:122"}, "properties": {"repobilityId": "ffde0f751bf3d8ad", "scanner": "scanner-primary", "fingerprint": "3ee45857b2f0886e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e1125b5f90af90c", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/garmin_etl.py:841"}, "properties": {"repobilityId": "1d7d9147d82bf0fd", "scanner": "scanner-primary", "fingerprint": "8e1125b5f90af90c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14801b25b741f57a", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/etl/hrv_backfill_check.py:49"}, "properties": {"repobilityId": "e9dd632b55ebb245", "scanner": "scanner-primary", "fingerprint": "14801b25b741f57a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe801825fc0e26dc", "level": "none", "message": {"text": "Commented-code block (9 lines) in audit/re-audit-2026-06-07/etl/eight_sleep_etl.py:37"}, "properties": {"repobilityId": "7e212591f16b17a9", "scanner": "scanner-primary", "fingerprint": "fe801825fc0e26dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28c8ffa3a69316af", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/etl/cronometer_import.py:57"}, "properties": {"repobilityId": "cb08c4fe4c77a8de", "scanner": "scanner-primary", "fingerprint": "28c8ffa3a69316af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be6a7215528caa65", "level": "note", "message": {"text": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-06-07/stats/hrv_analysis.py:165"}, "properties": {"repobilityId": "f8164f8adc932366", "scanner": "scanner-primary", "fingerprint": "be6a7215528caa65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3e980a28b3996fb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/hrv_analysis.py:171"}, "properties": {"repobilityId": "100fc8de87e7313c", "scanner": "scanner-primary", "fingerprint": "3e980a28b3996fb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a9e075a0fd34201", "level": "note", "message": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-06-07/stats/hrv_predict.py:349"}, "properties": {"repobilityId": "8478183a0fa627d3", "scanner": "scanner-primary", "fingerprint": "2a9e075a0fd34201", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e32c5ca1057503bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-06-07/stats/hrv_predict.py:337"}, "properties": {"repobilityId": "410f0b06a7d17f5b", "scanner": "scanner-primary", "fingerprint": "e32c5ca1057503bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-384daf5f9a89bd05", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-06-07/stats/causal_inference.py:140"}, "properties": {"repobilityId": "e23fdd8941b2d323", "scanner": "scanner-primary", "fingerprint": "384daf5f9a89bd05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b688f21dcea34817", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/tz-bundle/gps_tz_backfill.py:106"}, "properties": {"repobilityId": "053241fc1bf15ee5", "scanner": "scanner-primary", "fingerprint": "b688f21dcea34817", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6ccee0b3a33d096", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/units-bundle/format.ts:6"}, "properties": {"repobilityId": "4231530c4399c240", "scanner": "scanner-primary", "fingerprint": "d6ccee0b3a33d096", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-057ac64c4437c9d1", "level": "none", "message": {"text": "Commented-code block (7 lines) in audit/etl-bundle/whoop_etl.py:567"}, "properties": {"repobilityId": "d309d2124c5fdf20", "scanner": "scanner-primary", "fingerprint": "057ac64c4437c9d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdbbbde6eda1472e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/etl-bundle/whoop_etl.py:122"}, "properties": {"repobilityId": "429be4b6c2a03c52", "scanner": "scanner-primary", "fingerprint": "cdbbbde6eda1472e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d5ee45fcdba5ef7", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/etl-bundle/garmin_etl.py:895"}, "properties": {"repobilityId": "56b6bc18fe5a449a", "scanner": "scanner-primary", "fingerprint": "9d5ee45fcdba5ef7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fe8495fa23cee85", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/etl-bundle/hrv_backfill_check.py:49"}, "properties": {"repobilityId": "b7d3fa03f5230963", "scanner": "scanner-primary", "fingerprint": "4fe8495fa23cee85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9d15959b9571781", "level": "none", "message": {"text": "Commented-code block (7 lines) in audit/etl-bundle/eight_sleep_etl.py:234"}, "properties": {"repobilityId": "7e03bc39330d4007", "scanner": "scanner-primary", "fingerprint": "c9d15959b9571781", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8210cdad8ab6205a", "level": "note", "message": {"text": "Legacy-named symbol `_behavioral_v1` in audit/stats-bundle/hrv_analysis.py:126"}, "properties": {"repobilityId": "639c0b176fa22988", "scanner": "scanner-primary", "fingerprint": "8210cdad8ab6205a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa9742dd831e048e", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/stats-bundle/hrv_analysis.py:146"}, "properties": {"repobilityId": "a0dc54a0727e9ba3", "scanner": "scanner-primary", "fingerprint": "fa9742dd831e048e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6ad4929785a58ec", "level": "note", "message": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/stats-bundle/hrv_predict.py:336"}, "properties": {"repobilityId": "f0958098ed3081c5", "scanner": "scanner-primary", "fingerprint": "b6ad4929785a58ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d494c5180632b62d", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/stats-bundle/hrv_predict.py:324"}, "properties": {"repobilityId": "25cb2a80f61cd026", "scanner": "scanner-primary", "fingerprint": "d494c5180632b62d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c6be5af84ec8d7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/stats-bundle/causal_inference.py:157"}, "properties": {"repobilityId": "587931a98c7fdfd5", "scanner": "scanner-primary", "fingerprint": "2c6be5af84ec8d7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea2d3c110bf30d0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/units/format.ts:6"}, "properties": {"repobilityId": "ad098d2569e4d808", "scanner": "scanner-primary", "fingerprint": "ea2d3c110bf30d0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa0983cce7b6043b", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/units/queries.ts:63"}, "properties": {"repobilityId": "a45eb6c2bf6ed8c5", "scanner": "scanner-primary", "fingerprint": "fa0983cce7b6043b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb7bb84758d9cc2a", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/tz/gps_tz_backfill.py:103"}, "properties": {"repobilityId": "da0da63155c7e55f", "scanner": "scanner-primary", "fingerprint": "cb7bb84758d9cc2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecf8a92506e8854a", "level": "none", "message": {"text": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/spotify_etl.py:675"}, "properties": {"repobilityId": "22f3ba5adb743350", "scanner": "scanner-primary", "fingerprint": "ecf8a92506e8854a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10d0da6273331132", "level": "none", "message": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/whoop_etl.py:567"}, "properties": {"repobilityId": "a673cfb5260fd84c", "scanner": "scanner-primary", "fingerprint": "10d0da6273331132", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10214315bf5321c3", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 audit/re-audit-2026-05-26/etl/whoop_etl.py:122"}, "properties": {"repobilityId": "e83c3be727b52349", "scanner": "scanner-primary", "fingerprint": "10214315bf5321c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b63b08ae9698e24", "level": "none", "message": {"text": "Commented-code block (8 lines) in audit/re-audit-2026-05-26/etl/garmin_etl.py:794"}, "properties": {"repobilityId": "b4f2e596e7eddc1c", "scanner": "scanner-primary", "fingerprint": "3b63b08ae9698e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-240629210748ac89", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/etl/hrv_backfill_check.py:49"}, "properties": {"repobilityId": "a7dc0058e1aa5e5c", "scanner": "scanner-primary", "fingerprint": "240629210748ac89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0d8e8f345cf1a3e", "level": "none", "message": {"text": "Commented-code block (7 lines) in audit/re-audit-2026-05-26/etl/eight_sleep_etl.py:234"}, "properties": {"repobilityId": "8b28ddd33d5330c6", "scanner": "scanner-primary", "fingerprint": "b0d8e8f345cf1a3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac2703ecdd3afda", "level": "note", "message": {"text": "Legacy-named symbol `_behavioral_v1` in audit/re-audit-2026-05-26/stats/hrv_analysis.py:153"}, "properties": {"repobilityId": "7be88261762f7ff1", "scanner": "scanner-primary", "fingerprint": "1ac2703ecdd3afda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0bc4a5462bf7841c", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/hrv_analysis.py:159"}, "properties": {"repobilityId": "e66f8ccd8867f73d", "scanner": "scanner-primary", "fingerprint": "0bc4a5462bf7841c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-294e0808d8a67717", "level": "note", "message": {"text": "Legacy-named symbol `dir_acc_legacy` in audit/re-audit-2026-05-26/stats/hrv_predict.py:349"}, "properties": {"repobilityId": "878c9ec109174b21", "scanner": "scanner-primary", "fingerprint": "294e0808d8a67717", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a38e0439eb8cdbc9", "level": "none", "message": {"text": "Commented-code block (6 lines) in audit/re-audit-2026-05-26/stats/hrv_predict.py:337"}, "properties": {"repobilityId": "1054e20e3bb97a59", "scanner": "scanner-primary", "fingerprint": "a38e0439eb8cdbc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55d793b96520db0a", "level": "none", "message": {"text": "Commented-code block (5 lines) in audit/re-audit-2026-05-26/stats/causal_inference.py:140"}, "properties": {"repobilityId": "f1aea35d1692e8b3", "scanner": "scanner-primary", "fingerprint": "55d793b96520db0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "00de1737631afa51", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "5cccd4df0387861b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "275832e4d418fcbb", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "ed16a7359d31b3b0", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "c54a2134e440f0f6", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "46a6d4265e305274", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4e3ebe2e6e8d0a22", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "fbddad2b6755f361", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "7c26bcf8d7b56314", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f922174ca2f5422a", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "7323ab68f3e386f7", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "323538e108ef1230", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "02bfda3913258dfc", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8500ed0cb53902e9", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "de0bfbed2bb9fa4f", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "ce2a6c0bc1255990", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "5170e5b064bde0a3", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "4da7af6f996d37e9", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "8e2b7e206f508abb", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "2db3ff2c372bba9b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}