{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined unresolved feedback: RainierFacilitySolutions/rainier-app"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: supported_by_verification_signal\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {'pr_"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined assumption checks: RainierFacilitySolutions/rainier-app"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#7\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'ui_workflow_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1e8c476a032db48b\",\n    \"kind\": \"pull_request_body\",\n    "}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_schema_ui_api_gap", "name": "Foundry mined schema ui api mismatch: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined schema ui api mismatch: RainierFacilitySolutions/rainier-app"}, "fullDescription": {"text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {'pr_file': 39, 'link_quality': 6, 'commit': 5, 'commen"}, "properties": {"scanner": "foundry_dataset", "category": "quality", "severity": "high", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined bad chains: RainierFacilitySolutions/rainier-app"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#4\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-06555c3d2dcb5e31\",\n    \"kind\": \"pull_request_body\",\n"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "foundry_fake_real_gap", "name": "Foundry mined mock as real or placeholder: RainierFacilitySolutions/rainier-app", "shortDescription": {"text": "Foundry mined mock as real or placeholder: RainierFacilitySolutions/rainier-app"}, "fullDescription": {"text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#4\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 17\nEdges: 29\n"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "critical", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "scanner-166dff3c3df6a10e", "name": "ORM models found but no DB engine detected", "shortDescription": {"text": "ORM models found but no DB engine detected"}, "fullDescription": {"text": "The repo defines tables/models but no DB connection string was found. Likely lives in env vars or a config file the scanner didn't read."}, "properties": {"scanner": "scanner-primary", "layer": "data", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-259ce83cd671d8c3", "name": "Possible secret in app/scripts/create-auth-users.mjs", "shortDescription": {"text": "Possible secret in app/scripts/create-auth-users.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c25effe7e2242c13", "name": "Insecure pattern 'direct_innerhtml_assignment' in mockups/messaging-mixed/option-1-pure-timeline.html:738", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mockups/messaging-mixed/option-1-pure-timeline.html:738"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac9bc4ab78fffe32", "name": "Very large file: app/src/store/reducer.js (2782 lines)", "shortDescription": {"text": "Very large file: app/src/store/reducer.js (2782 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-cca16da8cf8413f7", "name": "Very large file: app/src/store/selectors.js (1159 lines)", "shortDescription": {"text": "Very large file: app/src/store/selectors.js (1159 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": "6 test file(s) for 222 source file(s) (ratio 0.03). 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 58 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 219 placeholder/mock markers across 71 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests. 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-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a06906fa3628fe8", "name": "Commented-code block (7 lines) in app/eslint.config.js:34", "shortDescription": {"text": "Commented-code block (7 lines) in app/eslint.config.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9600a69fbc5621b3", "name": "Commented-code block (8 lines) in app/api/unsubscribe.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/api/unsubscribe.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9699aa8a07a48afd", "name": "Commented-code block (7 lines) in app/api/settings/[...path].js:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/settings/[...path].js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a619def193408ec6", "name": "Commented-code block (5 lines) in app/api/email/send.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/email/send.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecc8e1efe2348ba4", "name": "Commented-code block (5 lines) in app/api/email/health.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/email/health.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85a3fc90d2e91998", "name": "Commented-code block (6 lines) in app/api/workspaces/[...path].js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/workspaces/[...path].js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26ebfb9dcc001775", "name": "Commented-code block (5 lines) in app/api/marketing/run.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/marketing/run.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3172cd94ade7ab78", "name": "Commented-code block (6 lines) in app/api/_lib/email.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/_lib/email.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c04828643e734b48", "name": "Commented-code block (5 lines) in app/api/_lib/gmailPoll.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/gmailPoll.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61aa945b57aafa4f", "name": "Commented-code block (5 lines) in app/api/_lib/google.js:164", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/google.js:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab6f7711c1663fa0", "name": "Commented-code block (5 lines) in app/api/_lib/sender.js:18", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/sender.js:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8cb90ba8e8e3208", "name": "Commented-code block (5 lines) in app/api/_lib/ingestEmail.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/ingestEmail.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb6ba1d639a207c7", "name": "Commented-code block (6 lines) in app/api/_lib/oauthWorkspaces.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/_lib/oauthWorkspaces.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-076eac5bf93a17b1", "name": "Commented-code block (6 lines) in app/api/_lib/users.js:46", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/_lib/users.js:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21c60b977d4f3cce", "name": "Commented-code block (6 lines) in app/api/_lib/marketing/compliance.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/_lib/marketing/compliance.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9311ca6c3610744d", "name": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/pdf.js:18", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/pdf.js:18"}, "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-19e64f45c7095a45", "name": "Commented-code block (5 lines) in app/api/_lib/quotes/pdf.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/quotes/pdf.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6a99b4de43629fe", "name": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/docx.js:11", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/docx.js:11"}, "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-2c8e4a20bbce64bc", "name": "Commented-code block (6 lines) in app/api/_lib/quotes/docx.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/_lib/quotes/docx.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7514e2c0ce9e9208", "name": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/store.js:41", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/store.js:41"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39d6c4b0d84e854e", "name": "Commented-code block (5 lines) in app/api/_lib/forms/notify.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/_lib/forms/notify.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61a7506924689171", "name": "Commented-code block (7 lines) in app/api/public/pay/[...path].js:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/public/pay/[...path].js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1eeeca959d0aa14", "name": "Commented-code block (5 lines) in app/api/inbox/inbound.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/inbox/inbound.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90bcf583032af082", "name": "Commented-code block (7 lines) in app/api/inbox/ingest.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/inbox/ingest.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc2ff592bf5fdc68", "name": "Commented-code block (5 lines) in app/api/inbox/connect/google.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/inbox/connect/google.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cf37c580d98471d", "name": "Commented-code block (9 lines) in app/api/quotes/[...path].js:1", "shortDescription": {"text": "Commented-code block (9 lines) in app/api/quotes/[...path].js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bed8d7580cc48b51", "name": "Commented-code block (5 lines) in app/api/forms/[[...path]].js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/forms/[[...path]].js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcb1bbad714ef2a2", "name": "Commented-code block (5 lines) in app/scripts/import-keys.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/scripts/import-keys.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fda8a97bd168d819", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/import-keys.mjs:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/import-keys.mjs:48"}, "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-43ef43ce9a8387d0", "name": "Commented-code block (8 lines) in app/scripts/seed-snapshot-sample.mjs:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/scripts/seed-snapshot-sample.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2803e64014250b5", "name": "Commented-code block (5 lines) in app/scripts/verify-auth.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/scripts/verify-auth.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b89c2cf070ef9dd", "name": "Legacy-named symbol `rainier_quote_v1` in app/scripts/dump-pdf-text.mjs:7", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/scripts/dump-pdf-text.mjs:7"}, "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-9155a2bcbee0dd3a", "name": "Legacy-named symbol `rainier_quote_v1` in app/scripts/diag-quotes.mjs:26", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/scripts/diag-quotes.mjs:26"}, "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-c531432b096769dc", "name": "Commented-code block (5 lines) in app/scripts/test-email-route.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/scripts/test-email-route.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f13b401c275952df", "name": "Commented-code block (5 lines) in app/scripts/test-email.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/scripts/test-email.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34a8060dda943489", "name": "Commented-code block (10 lines) in app/scripts/push-financials.mjs:1", "shortDescription": {"text": "Commented-code block (10 lines) in app/scripts/push-financials.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b992e3a0da203226", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/push-financials.mjs:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/push-financials.mjs:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e15052290fb587c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/diag-prod.mjs:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/diag-prod.mjs:12"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98e00cb633ee08d9", "name": "Commented-code block (11 lines) in app/src/components/MarketingScheduler.jsx:4", "shortDescription": {"text": "Commented-code block (11 lines) in app/src/components/MarketingScheduler.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e473d044cc0000dc", "name": "Commented-code block (5 lines) in app/src/components/TwilioInboundListener.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/TwilioInboundListener.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4eee30bd369494c", "name": "Commented-code block (5 lines) in app/src/components/BulkActionBar.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/BulkActionBar.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b47c699e84df6c0", "name": "Commented-code block (7 lines) in app/src/components/Sidebar.jsx:10", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/components/Sidebar.jsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9288019184c6cea", "name": "Commented-code block (8 lines) in app/src/components/GoogleWorkspacesSection.jsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in app/src/components/GoogleWorkspacesSection.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e0ae1aa6387cd34", "name": "Commented-code block (6 lines) in app/src/components/ClientNamePicker.jsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/components/ClientNamePicker.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-187b2c9cadc0310c", "name": "Commented-code block (10 lines) in app/src/components/ReminderScheduler.jsx:4", "shortDescription": {"text": "Commented-code block (10 lines) in app/src/components/ReminderScheduler.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb7e0ac68a97e3f9", "name": "Commented-code block (13 lines) in app/src/components/CrewPicker.jsx:7", "shortDescription": {"text": "Commented-code block (13 lines) in app/src/components/CrewPicker.jsx: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-1f4d8868a5201737", "name": "Commented-code block (6 lines) in app/src/components/ConnectInboxModal.jsx:9", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/components/ConnectInboxModal.jsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb85e50c78b3cd06", "name": "Commented-code block (5 lines) in app/src/components/AddContactModal.jsx:105", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/AddContactModal.jsx:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5eea51a4abc6b996", "name": "Commented-code block (5 lines) in app/src/components/NotificationListener.jsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/NotificationListener.jsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94f543477546e2c7", "name": "Commented-code block (6 lines) in app/src/components/GmailConnectInstructions.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/components/GmailConnectInstructions.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54c1f16e2d4735eb", "name": "Commented-code block (6 lines) in app/src/components/WorkspacePicker.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/components/WorkspacePicker.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccc672c75f567e44", "name": "Commented-code block (7 lines) in app/src/components/SignatureCapture.jsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/components/SignatureCapture.jsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e7056fc0af1bf7e8", "name": "Commented-code block (5 lines) in app/src/components/ConversationThreadList.jsx:179", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/ConversationThreadList.jsx:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2c1f5346c83b0de", "name": "Commented-code block (8 lines) in app/src/components/ConnectEmailProviderModal.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/src/components/ConnectEmailProviderModal.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-28fa58bc6828c34b", "name": "Commented-code block (6 lines) in app/src/components/ServicePicker.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/components/ServicePicker.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a8281873f8b6c12", "name": "Commented-code block (10 lines) in app/src/components/InboundListener.jsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in app/src/components/InboundListener.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f25e64932a2804db", "name": "Commented-code block (5 lines) in app/src/components/TagPicker.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/TagPicker.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec30fbee08a43de4", "name": "Commented-code block (5 lines) in app/src/components/FilterSelect.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/FilterSelect.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b890ce1238dbc2c", "name": "Commented-code block (5 lines) in app/src/components/CsvImportModal.jsx:137", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/CsvImportModal.jsx:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-898a9904ad99af7c", "name": "Commented-code block (5 lines) in app/src/components/Icon.jsx:68", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/Icon.jsx:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f6764890c1b688d", "name": "Commented-code block (5 lines) in app/src/components/PipelineBoard.jsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/PipelineBoard.jsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1849c007c4ec5d1", "name": "Commented-code block (7 lines) in app/src/components/AddWorkspaceModal.jsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/components/AddWorkspaceModal.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccf706a70a98a01d", "name": "Legacy-named symbol `rainier_quote_v1` in app/src/components/CreateQuoteModal.jsx:38", "shortDescription": {"text": "Legacy-named symbol `rainier_quote_v1` in app/src/components/CreateQuoteModal.jsx:38"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14255e4e595abb2a", "name": "Commented-code block (5 lines) in app/src/components/ConnectMarketingInboxModal.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/components/ConnectMarketingInboxModal.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51d499c875ed5ac8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/twilio.js:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/twilio.js:50"}, "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-63fc1472bc2d5749", "name": "Commented-code block (5 lines) in app/src/lib/push.js:10", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/lib/push.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76854e1ebef22d40", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/push.js:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/push.js:151"}, "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-1f36b1e4dc4c17bc", "name": "Commented-code block (9 lines) in app/src/lib/email.js:9", "shortDescription": {"text": "Commented-code block (9 lines) in app/src/lib/email.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b2b0e054c3894005", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/email.js:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/email.js:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e09a9f70271b2479", "name": "Commented-code block (6 lines) in app/src/lib/roles.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/lib/roles.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-adb0956f865f78eb", "name": "Commented-code block (5 lines) in app/src/lib/attachments.js:159", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/lib/attachments.js:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d09f7529a70bc918", "name": "Commented-code block (18 lines) in app/src/lib/marketingScheduler.js:8", "shortDescription": {"text": "Commented-code block (18 lines) in app/src/lib/marketingScheduler.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93093080b9b5b477", "name": "Commented-code block (5 lines) in app/src/lib/reminderScheduler.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/lib/reminderScheduler.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a02742c1642688b", "name": "Commented-code block (6 lines) in app/src/lib/notifications.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/lib/notifications.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e7b0fef407bf85f", "name": "Legacy-named symbol `rainier_quotes_stub_v2` in app/src/lib/quotesApi.js:85", "shortDescription": {"text": "Legacy-named symbol `rainier_quotes_stub_v2` in app/src/lib/quotesApi.js:85"}, "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-c721fa6be4851e0b", "name": "Commented-code block (7 lines) in app/src/lib/connectedInboxes.js:15", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/lib/connectedInboxes.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9396950f7e1b701d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/connectedInboxes.js:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/connectedInboxes.js:113"}, "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-5b0489695f3158e8", "name": "Legacy-named symbol `rainier_forms_stub_v1` in app/src/lib/formsApi.js:72", "shortDescription": {"text": "Legacy-named symbol `rainier_forms_stub_v1` in app/src/lib/formsApi.js:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ff470cd27e2d723", "name": "Commented-code block (6 lines) in app/src/lib/formsApi.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/lib/formsApi.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d8eaf5f1c678053", "name": "Commented-code block (7 lines) in app/src/lib/signature.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/lib/signature.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c49b81d9c4ea7da7", "name": "Commented-code block (6 lines) in app/src/lib/oauthWorkspaces.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/lib/oauthWorkspaces.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b3991c860217a91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/oauthWorkspaces.js:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/oauthWorkspaces.js:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02855829956d1679", "name": "Legacy-named symbol `rainier_integrations_stub_v1` in app/src/lib/integrationsApi.js:25", "shortDescription": {"text": "Legacy-named symbol `rainier_integrations_stub_v1` in app/src/lib/integrationsApi.js:25"}, "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-2a3c65108c85d3d2", "name": "Commented-code block (5 lines) in app/src/lib/forms/formula.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/lib/forms/formula.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb699b3532397c02", "name": "Commented-code block (7 lines) in app/src/pages/Keys.jsx:335", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/pages/Keys.jsx:335"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69ecbed17e6bf939", "name": "Commented-code block (5 lines) in app/src/pages/Messaging.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/pages/Messaging.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c6813bf9c86fbf8", "name": "Commented-code block (6 lines) in app/src/pages/ContactDetail.jsx:95", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/pages/ContactDetail.jsx:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfc75904956f8338", "name": "Commented-code block (5 lines) in app/src/pages/Login.jsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/pages/Login.jsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dedb7d42c7952ae7", "name": "Commented-code block (6 lines) in app/src/pages/settings/Integrations.jsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/pages/settings/Integrations.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0fd5d71b8f0f8b0", "name": "Commented-code block (6 lines) in app/src/pages/settings/Tags.jsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/pages/settings/Tags.jsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a53fd530e0d69331", "name": "Commented-code block (7 lines) in app/src/pages/settings/QuickStart.jsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/pages/settings/QuickStart.jsx:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-747f955387dd9b0a", "name": "Commented-code block (6 lines) in app/src/pages/marketing/SequencesTab.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/pages/marketing/SequencesTab.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a40a614f885655b", "name": "Commented-code block (8 lines) in app/src/pages/marketing/InboxesTab.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/src/pages/marketing/InboxesTab.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab7633f0742064ad", "name": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceEditorPanel.jsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceEditorPanel.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5646282aac9c15e1", "name": "Commented-code block (6 lines) in app/src/pages/marketing/StepEditorModal.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/src/pages/marketing/StepEditorModal.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-243cd9d29988fa56", "name": "Commented-code block (5 lines) in app/src/pages/marketing/SettingsTab.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/pages/marketing/SettingsTab.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e1a96370863b742", "name": "Commented-code block (5 lines) in app/src/pages/marketing/RepliesTab.jsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/pages/marketing/RepliesTab.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3bc21b33eec72871", "name": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceContactsModal.jsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceContactsModal.jsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecbba9f6411b4f60", "name": "Commented-code block (5 lines) in app/src/hooks/useAuth.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/hooks/useAuth.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b84f0a526d6c1d29", "name": "Commented-code block (11 lines) in app/src/store/sync.js:1", "shortDescription": {"text": "Commented-code block (11 lines) in app/src/store/sync.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2aa27c2dbe60d89", "name": "Commented-code block (5 lines) in app/src/store/reducer.js:241", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/store/reducer.js:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b98180f71ba9e1ea", "name": "Commented-code block (8 lines) in app/src/store/persist.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/src/store/persist.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df3f3a1595ea2798", "name": "Commented-code block (5 lines) in app/src/store/selectors.js:184", "shortDescription": {"text": "Commented-code block (5 lines) in app/src/store/selectors.js:184"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87acb4066071a15a", "name": "19 env vars used in code but missing from .env.example", "shortDescription": {"text": "19 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `APP_BASE_URL`, `CLEAR`, `CRON_SECRET`, `DEV`, `DIAG_EMAIL`, `DIAG_PW`, `GOOGLE_MAPS_API_KEY`, `GOOGLE_PLACE_ID` + 11 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f141f05247496ca9", "name": "Frontend route `/f/:slug` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `/f/:slug` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-edf7d4e8c118465e", "name": "Frontend route `/quote/:token` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `/quote/:token` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52d8f58fbe6fd39c", "name": "Frontend route `schedule` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `schedule` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15b2464cba7a6a4b", "name": "Frontend route `schedule/:jobId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `schedule/:jobId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80dbec62e8fb32b2", "name": "Frontend route `contacts` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `contacts` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bff1098e81337ce8", "name": "Frontend route `contacts/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `contacts/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-265f87fd3fdffc5f", "name": "Frontend route `clients` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `clients` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7f5cc720f66aaa5", "name": "Frontend route `clients/contact/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `clients/contact/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b291bb808d7c98a1", "name": "Frontend route `clients/:clientId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `clients/:clientId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5014945d9c77ca17", "name": "Frontend route `pipeline` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4cb130e84fe2acc2", "name": "Frontend route `invoices` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `invoices` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68f41b3960f990f6", "name": "Frontend route `invoices/:invoiceId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `invoices/:invoiceId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f7e5600cbde2a55", "name": "Frontend route `reminders` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `reminders` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c6d831bcebd7d1c", "name": "Frontend route `messaging` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `messaging` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9e646827025b0f2", "name": "Frontend route `messaging/:conversationId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `messaging/:conversationId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd31c2e1250dc2e9", "name": "Frontend route `marketing` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `marketing` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe208af6b2f90499", "name": "Frontend route `quotes` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `quotes` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-daf03bb770afe988", "name": "Frontend route `quotes/:id` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `quotes/:id` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39a0685b374d6553", "name": "Frontend route `keys` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `keys` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e137bfc494f21956", "name": "Frontend route `complaints` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `complaints` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c22ff55d4a509109", "name": "Frontend route `reviews` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `reviews` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6922209b0ae9f740", "name": "Frontend route `forms` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbe7afebb7ae1ff5", "name": "Frontend route `forms/:formId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60bf23c2fad66c28", "name": "Frontend route `forms/:formId/submissions` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId/submissions` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bd85a07c2006bf1", "name": "Frontend route `forms/:formId/submissions/:submissionId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId/submissions/:submissionId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de91d7d2bd6ca8b8", "name": "Frontend route `forms/:formId/versions` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId/versions` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80b236aab98596fc", "name": "Frontend route `forms/:formId/analytics` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId/analytics` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76dfd773d6f582f8", "name": "Frontend route `forms/:formId/integrations` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `forms/:formId/integrations` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cff3881dee800ff1", "name": "Frontend route `settings` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c79f177babfb6c1", "name": "Frontend route `team/:userId` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `team/:userId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc93d57ce9cfcf9e", "name": "Frontend route `notifications` has no Link/navigate to it \u2014 app/src/App.jsx", "shortDescription": {"text": "Frontend route `notifications` has no Link/navigate to it \u2014 app/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17763"}, "properties": {"repository": "RainierFacilitySolutions/rainier-app", "repoUrl": "https://github.com/RainierFacilitySolutions/rainier-app", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 360904, "scanner": "foundry_dataset", "fingerprint": "da1b20d5e9ea542b0785313c85c90da22e3bcd927850afea15380c4d3aaaad37", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 2, "api_or_backend": 11, "schema_or_data": 3, "ui_or_frontend": 25, "deployment_env_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 104, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 39, "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": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 62, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 39, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8c0055a86fdf80fb", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "schema_or_data": 15, "ui_or_frontend": 125}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: supported_by_verification_signal\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {'pr_file': 39, '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': 39, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, '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': 25, 'api_or_backend': 11, 'schema_or_data': 3, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-f0f9f8edd35c5c01", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 360903, "scanner": "foundry_dataset", "fingerprint": "04d5a64043a2e79331e67aa2c79ef461e601f9d353c8224ff17cc8f4c405469b", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"ui_workflow": 3, "ui_or_frontend": 1, "ui_workflow_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 31, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-bd78e4d218aa4ed3", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#7\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 31\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_workflow': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-582d6f7db1285343", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 360902, "scanner": "foundry_dataset", "fingerprint": "6e0c62836affc108d60cc3e7ee624d9ae99411c1a90c74887630f7a2f4397f30", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"bug_fix": 4, "ui_workflow": 1, "ui_or_frontend": 1, "ui_workflow_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-c6433c0209d3c2f2", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#6\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#6\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'ui_workflow': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-cf6313d304dbbc40", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344372, "scanner": "foundry_dataset", "fingerprint": "82db8b251e61025cea47d101fad03419a699c3b72ffe7dadbcd9533f818327ae", "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": {"bug_fix": 2, "api_or_backend": 11, "schema_or_data": 3, "ui_or_frontend": 25, "deployment_env_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 104, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 39, "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": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 62, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 39, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-91eded4c8e571b16", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "schema_or_data": 15, "ui_or_frontend": 125}}, "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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {'pr_file': 39, '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': 39, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, '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': 25, 'api_or_backend': 11, 'schema_or_data': 3, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-80ea0353f963e2ed", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344371, "scanner": "foundry_dataset", "fingerprint": "00920c727fb24f686d645b5491ed45feefe37090c5df52ed27e3943106e5fb71", "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": {"ui_workflow": 3, "ui_or_frontend": 1, "ui_workflow_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 31, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 3, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 22, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#7", "issue_number": "7", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-8edf4d8f5ff401f6", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#7\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 7\nGraph consistency label: weak_supervision_needs_review\nNodes: 22\nEdges: 31\nNode types: {'link_quality': 6, 'commit': 3, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 3, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_workflow': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-b03021ebe745e7a4", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344370, "scanner": "foundry_dataset", "fingerprint": "a2ae142f9309d322f51a9b990b530b828da22c31a137f9b6dfae7f3cb3c40c46", "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": {"bug_fix": 4, "ui_workflow": 1, "ui_or_frontend": 1, "ui_workflow_gap": 1, "human_feedback_general": 1, "unlinked_human_feedback": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "ambiguous_needs_more_evidence": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6, "ambiguous_needs_more_evidence": 2}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 1, "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": 1, "thread_has_comment_chain": 2, "comment_chain_links_commit": 5, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 1, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#6", "issue_number": "6", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-e5910ca201f2c3f7", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 5}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#6\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#6\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#6\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 6\nGraph consistency label: weak_supervision_needs_review\nNodes: 24\nEdges: 33\nNode types: {'link_quality': 6, 'commit': 5, 'comment': 2, 'comment_chain': 2, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'pr_file': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, 'thread_has_comment': 2, 'thread_has_comment_chain': 2, 'comment_has_chain': 2, 'comment_chain_touches_file': 2, 'issue_chain_has_comment_chain': 2, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_touches_file': 1, 'thread_has_issue_chain': 1, 'issue_chain_touches_file': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_feedback_general': 1, 'ui_or_frontend': 1, 'human_reported_issue_then_fix_attempt': 1, 'ui_workflow': 1, 'unlinked_human_feedback': 1, 'ambiguous_needs_more_evidence': 1}\nOutcomes: {'claimed_resolved_unverified': 6, 'ambiguous_needs_more_evidence': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-591af2fccf8ee6da", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344369, "scanner": "foundry_dataset", "fingerprint": "3b9b7113a9324a7bf980be7f8cd40d4b0021a47219b14372c5fd542c2b9082c3", "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": {"bug_fix": 2, "ui_workflow": 2, "ui_or_frontend": 4, "ui_workflow_gap": 1, "verification_or_tests": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 36, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 4, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 4, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 4, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 24, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 4, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#5", "issue_number": "5", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-2b66924574308ad1", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"ui_or_frontend": 16}}, "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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#5\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#5\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#5\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 5\nGraph consistency label: supported_by_verification_signal\nNodes: 24\nEdges: 36\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 4, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_touches_file': 4, 'comment_chain_touches_file': 4, 'issue_chain_touches_file': 4, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'ui_workflow': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, '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/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-cd578acf7886ceec", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344368, "scanner": "foundry_dataset", "fingerprint": "b3540fdca58ec93196c03e74c23f085ae52a72c9c05f3d5e444e08a5c56241d8", "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": {"bug_fix": 4, "ui_or_frontend": 8, "verification_or_tests": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#2", "issue_number": "2", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-99e404392707413a", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"ui_or_frontend": 32}}, "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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#2\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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#2\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#2\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 2\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 48\nNode types: {'pr_file': 8, 'commit': 5, 'link_quality': 5, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 8, 'comment_chain_touches_file': 8, 'issue_chain_touches_file': 8, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 8, 'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, '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/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-34a55e86af5b6b8d", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 344367, "scanner": "foundry_dataset", "fingerprint": "ef8f219f93f0c3be9a929997dce9211166dcda90c6439bf7ad7cbee8136588d9", "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": {"bug_fix": 3, "ui_workflow": 2, "ui_or_frontend": 3, "ui_workflow_gap": 1, "mostly follows blueprint": 2, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 33, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 3, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 3, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 3, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 23, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 3, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#1", "issue_number": "1", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-a47bd7d6efb0f374", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 12}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#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: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#1\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#1\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 1\nGraph consistency label: weak_supervision_needs_review\nNodes: 23\nEdges: 33\nNode types: {'commit': 5, 'link_quality': 5, 'pr_file': 3, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'thread_touches_file': 3, 'comment_chain_touches_file': 3, 'issue_chain_touches_file': 3, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 3, 'bug_fix': 3, 'claimed_resolved_unverified': 3, 'ui_workflow': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'ui_workflow_gap': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3, '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/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-7fe54a0ae26064fc", "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": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 300157, "scanner": "foundry_dataset", "fingerprint": "7fdae408bf11377f0bf22a1a4d0b6be9126a3819025218c578353c7e33892b7e", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "RainierFacilitySolutions/rainier-app#7", "human_labels": ["human_feedback_general", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "7", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.59, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2b74a7b04c9c8273", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 4, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#7\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#7\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'ui_workflow_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-1e8c476a032db48b\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/7\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/7\\nTitle: Dashboard: remove Overview/Metrics toggle and notif chip strip\\nBody:\\n## Summary\\n- Removes the Overview/Metrics toggle from the Dashboard. The page now renders the former \\\"Overview\\\" content unconditionally.\\n- Removes the notification chip strip beneath the page header (overdue invoices, jobs starting soon, unread messages). Those signals already live in Today's Schedule, Follow-ups, and the Financial Snapshot section.\\n- Cleans up unused imports and locals (\\\\`useState\\\\`, \\\\`invoiceBalance\\\\`, \\\\`deriveInvoiceStatus\\\\`, \\\\`layout\\\\`, \\\\`soon\\\\`, \\\\`topClients\\\\`, \\\\`overdueList\\\\`).\\n\\n## Test plan\\n- [ ] Open / \u2014 no Overview/Metrics toggle, no chip strip beneath the \\\"Dashboard\\\" heading.\\n- [ ] Hero stats, Operational Performance, Financial Snapshot, Today's Schedule, Quick Actions, Follow-ups, Weekly Revenue, and Team panel all render as before.\\n\\n\ud83e\udd16 Generated with [Claude Code](https://claude.com/claude-code)\"\n  },\n  {\n    \"id\": \"github-feedback-comment-534efc12a6fb4115\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/7#issuecomment-4381192024\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/7#issuecomment-4381192024\\nTitle: \\nBody:\\nCherry-picked directly to main as 1e4fb24.\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-9d30c8f7a90ddf2f\",\n    \"filename\": \"app\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "comment-chain-pattern-assumption_checks-254014ad9e75bdf6", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 300156, "scanner": "foundry_dataset", "fingerprint": "5e41b8ff891badfac25fbc8900e3205cd58b08154c843b8d0c40ae6797495409", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "RainierFacilitySolutions/rainier-app#6", "human_labels": ["human_feedback_general", "ui_or_frontend", "ui_workflow_gap"], "issue_number": "6", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.642, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-8b92962422a3d44a", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 1, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 1}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 4, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#6\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#6\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 2\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 1\nLabels: {'ui_workflow_gap': 1, 'human_feedback_general': 1}\nPolarities: {'bad': 1, 'neutral': 1}\nChanged file labels: {'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-90657d48533471a4\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/6\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/6\\nTitle: Normalize selector radii to pill across the app\\nBody:\\n## Summary\\n- Outer container and inner active state on toggle/tab/segmented selectors now both use \\\\`--radius-full\\\\` so the inner pill nests cleanly inside its track.\\n- Two CSS scopes touched:\\n  - \\\\`.messaging-inbox-toggle\\\\` + \\\\`.inbox-toggle-btn\\\\` \u2014 the My Inbox / Team Inbox / Internal Chat toggle.\\n  - \\\\`.tab-container-line\\\\` + \\\\`.tab-btn\\\\` \u2014 Contacts/Accounts tabs, ContactDetail/ClientDetail/Schedule/Reminders detail tabs, and the conversation context panel (\\\\`.context-tabs\\\\` inherits).\\n  - \\\\`.segmented\\\\` \u2014 channel pickers and the AND/OR filter logic toggle. \\\\`overflow: hidden\\\\` + radius-full clips the flush inner buttons to the pill.\\n- Filter chips and chip-pickers were already correct, so no change there.\\n\\n## Test plan\\n- [ ] Messaging: My Inbox / Team Inbox / Internal Chat toggle \u2014 active pill nests cleanly inside the container.\\n- [ ] Contacts page: Contacts/Accounts sub-tabs are pill-shaped with the active tab fit\"\n  },\n  {\n    \"id\": \"github-feedback-comment-8c82e52a9ae91ebf\",\n    \"kind\": \"issue_comment\",\n    \"label\": \"human_feedback_general\",\n    \"polarity\": \"neutral\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/6#issuecomment-4381119913\",\n    \"text\": \"GitHub feedback: human_feedback_general\\nPolarity: neutral\\nKind: issue_comment\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/6#issuecomment-4381119913\\nTitle: \\nBody:\\nCherry-picked directly onto main as 58c5f46 \u2192 HEAD.\"\n  }\n]\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "comment-chain-pattern-assumption_checks-cdc2e3fc8179d94b", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 300155, "scanner": "foundry_dataset", "fingerprint": "3d41bf6ba6677a58d7cce398b105f38fbf4fcf3831ff7eaf36d52aa5a672428a", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "RainierFacilitySolutions/rainier-app#1", "human_labels": ["ui_or_frontend", "ui_workflow_gap"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-681cad1835010f48", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 3, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 3}, "linked_commit_count": 5, "helicopter_view_count": 2, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision"], "linked_ci_commit_count": 0, "verification_artifact_count": 4, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#1\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 5\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 3\nLabels: {'ui_workflow_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 3}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-99db0b55bd958bcd\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"ui_workflow_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/1\",\n    \"text\": \"GitHub feedback: ui_workflow_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/1\\nTitle: UX pass: modern checkboxes, pipeline header alignment, invoices client search\\nBody:\\n## Summary\\n- New checkbox skin: appearance:none with rounded navy fill, white tick, and a ::before pseudo-element extending the click area to ~32x32 around a 20x20 visible box.\\n- Pipeline column headers now lock to a 2-row minimum height with line-clamp:3; cards align across columns regardless of label wrap. Column $ totals enlarged from 10px to 14px bold primary.\\n- Invoices Client filter replaced with a free-text search (case-insensitive substring match on client name) on its own row inside the existing filter container \u2014 scales past hard-coded dropdown options.\\n\\n## Test plan\\n- [ ] Pipeline: all stage headers share one row height; \\\"Walkthrough Scheduled\\\" wrap doesn't push cards down\\n- [ ] Pipeline: card $ totals are visually larger\\n- [ ] Invoices: typing a partial client name filters rows\\n- [ ] Settings > Roles & Permissions: checkboxes render in the new style\\n- [ ] Clicking the very edge\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-cbf297eb7ffaec2e\",\n    \"filename\": \"app/src/components/PipelineBoard.jsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 1,\n    \"changes\": 2,\n    \"blob_url\": \"https://github.com/RainierFacilitySolutions/rainier-app/blob/382571f79188f3e2992714163b1ad6ade2972a97/app%2Fsrc%2Fcomponents%2FPipelineBoard.jsx\"\n  },\n  {\n    \"id\": \"github-pr-file-file-ff8310ae28a79412\",\n    \"filename\": \"app/src/index.css\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 96,\n    \"deletions\": 23,\n    \"changes\": 119,\n    \"blob_url\": \"https\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "comment-chain-pattern-assumption_checks-6a2a63c439caa329", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 328246, "scanner": "foundry_dataset", "fingerprint": "2d6f64cb13a745f36e9872e9dde2b479e093c865a0218f7bc1327b25ba6b169b", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 2, "api_or_backend": 11, "schema_or_data": 3, "ui_or_frontend": 25, "deployment_env_gap": 1, "verification_or_tests": 3, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 1, "blueprint_human_gap_disagreement": 2, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"not_resolved_or_not_observed": 2, "claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 104, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 2, "thread_has_comment": 2, "thread_touches_file": 39, "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": 5, "comment_chain_touches_file": 24, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 2}, "node_count": 62, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 2, "pr_file": 39, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 6, "comment_chain": 2, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#8", "issue_number": "8", "quality_tiers": {"unresolved": 1, "assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-de24bb04103225a5", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"api_or_backend": 55, "schema_or_data": 15, "ui_or_frontend": 125}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#8\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#8\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 8\nGraph consistency label: supported_by_verification_signal\nNodes: 62\nEdges: 104\nNode types: {'pr_file': 39, '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': 39, 'comment_chain_touches_file': 24, 'issue_chain_touches_file': 12, 'chain_has_link_quality': 6, 'comment_chain_links_commit': 5, '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': 25, 'api_or_backend': 11, 'schema_or_data': 3, 'verification_or_tests': 3, 'claimed_resolved_with_verification_signal': 3, 'bug_fix': 2, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'deployment_env_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'human_reported_issue_no_linked_fix': 1, 'not_resolved_or_not_observed': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6, 'not_resolved_or_not_observed': 2}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2, 'unresolved': 1}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-d45bdd37ce011515", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_schema_ui_api_gap", "level": "error", "message": {"text": "Foundry mined schema ui api mismatch: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 328245, "scanner": "foundry_dataset", "fingerprint": "2d8ec36d74c9f69df1c26164433661572d6fd1edbc4b105e3a3101c9f7173dfc", "category": "quality", "severity": "high", "confidence": 0.76, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Schema, UI, and API mismatch", "intent": "Assumption-check examples for data-path consistency across layers.", "labels": {"bug_fix": 4, "ui_or_frontend": 8, "verification_or_tests": 1, "data_schema_persistence": 1, "mostly follows blueprint": 2, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 2, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "schema_ui_api_mismatch", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "schema_ui_api_mismatch", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 48, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 8, "alignment_uses_comment": 2, "alignment_uses_finding": 2, "chain_has_link_quality": 5, "comment_aligns_finding": 2, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 8, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 8, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 28, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 8, "alignment": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 5, "comment_chain": 1, "blueprint_finding": 2}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#2", "issue_number": "2", "quality_tiers": {"assumption_check": 2, "weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "assumption_check", "source_motif_id": "graph-pattern-motif-thread-ec87c2b5b4fa3be0", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"ui_or_frontend": 32}}, "text": "Graph query export: Schema, UI, and API mismatch\nQuery id: schema_ui_api_mismatch\nQuery type: motif_query\nIntent: Assumption-check examples for data-path consistency across layers.\nMotif: schema_ui_api_mismatch\nTraining usage: assumption_check\nGraph gold label: supported_by_verification_signal\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#2\nEvidence:\nGraph motif: Schema, UI, and API evidence do not line up\nMotif id: schema_ui_api_mismatch\nPolarity: bad\nTraining usage: assumption_check\nSeverity: high\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#2\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#2\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 2\nGraph consistency label: supported_by_verification_signal\nNodes: 28\nEdges: 48\nNode types: {'pr_file': 8, 'commit': 5, 'link_quality': 5, 'alignment': 2, 'blueprint_finding': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 8, 'comment_chain_touches_file': 8, 'issue_chain_touches_file': 8, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 5, 'alignment_uses_comment': 2, 'alignment_uses_finding': 2, 'comment_aligns_finding': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 8, 'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'thread_has_human_issue_and_fix_context': 2, 'blueprint_human_gap_disagreement': 2, 'mostly follows blueprint': 2, 'issue_or_pull_request_thread': 1, 'data_schema_persistence': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 2}\nCI labels: {}\nCurriculum targets:\n- Create schema-to-API-to-UI consistency tasks with migrations and tests.\n- Teach models to verify persistence, route contracts, and UI state together.\nAssumption checks:\n- Do schema changes have matching API and UI handling?\n- Are migrations and tests present for the data path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-7a3b302d9d4b78e2", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/schema_ui_api_mismatch/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/schema_ui_api_mismatch", "training_usage": "assumption_check"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 315869, "scanner": "foundry_dataset", "fingerprint": "0c9b6e8196c9bc301469a6f66b136658905866a2c49561f6a3a7e46eb3472783", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "RainierFacilitySolutions/rainier-app#4", "human_labels": ["docs_or_claims", "mock_placeholder", "ui_or_frontend"], "issue_number": "4", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.625, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-e09e554b1a646a8f", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 5, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"docs_or_claims": 1, "ui_or_frontend": 4}, "linked_commit_count": 3, "helicopter_view_count": 2, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 4, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#4\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 3\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 5\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'docs_or_claims': 1, 'ui_or_frontend': 4}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-06555c3d2dcb5e31\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/4\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/4\\nTitle: Bulk bar UX: hide controls when empty, unified styling across modules\\nBody:\\n## Summary\\n- Bulk action bars (Contacts, Accounts, Pipeline, Invoices) now hide their controls when nothing is selected \u2014 only placeholder text shows. On selection, controls appear left-justified, replacing the placeholder in-place.\\n- Removed flex spacers (`flex: 1`, `marginLeft: auto`) so controls flow naturally after the count.\\n- Cancel/Clear buttons get the danger (red) treatment; Archive stays primary (blue) for visual consistency across modules.\\n- `UI_RULES.md` Rule 3 updated to document the new pattern (hide vs. dim, left-justified, no spacer).\\n\\n## Test plan\\n- [ ] Contacts tab: empty state shows only placeholder; selecting a row reveals TagPicker + Apply tags + Assign owner + Archive (blue) + Cancel (red) left-justified.\\n- [ ] Accounts tab: empty state shows only placeholder; selecting reveals Archive (blue) + Cancel (red).\\n- [ ] Pipeline: empty state shows only placeholder; selecting card(\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-e5e6b1ec928f112f\",\n    \"filename\": \"UI_RULES.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 11,\n    \"deletions\": 4,\n    \"changes\": 15,\n    \"blob_url\": \"https://github.com/RainierFacilitySolutions/rainier-app/blob/5952f882a5f08547bd6b1b526c61e2510d33548c/UI_RULES.md\"\n  },\n  {\n    \"id\": \"github-pr-file-file-4159794ee450ac2a\",\n    \"filename\": \"app/src/components/PipelineBoard.jsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 25,\n    \"deletions\": 24,\n    \"changes\": 49,\n    \"blob_url\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "comment-chain-pattern-bad_chains-42694f08321180d6", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 315868, "scanner": "foundry_dataset", "fingerprint": "60c72d4c187f5ce76cae64267a253fc709dbe8e5b671af5984b1c93b7091eb34", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "RainierFacilitySolutions/rainier-app#3", "human_labels": ["mock_placeholder", "ui_or_frontend"], "issue_number": "3", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.65, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-5c3fedc91f2c0000", "helicopter_views": {"schemas": 2}, "artifact_families": {"ci": 4, "designs": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 2, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"ui_or_frontend": 2}, "linked_commit_count": 4, "helicopter_view_count": 2, "source_artifact_count": 5, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 4, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#3\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: RainierFacilitySolutions/rainier-app#3\nRepo: RainierFacilitySolutions/rainier-app\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 4\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 2\nLabels: {'mock_placeholder': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'ui_or_frontend': 2}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-27053645fda2714a\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"mock_placeholder\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/RainierFacilitySolutions/rainier-app/pull/3\",\n    \"text\": \"GitHub feedback: mock_placeholder\\nPolarity: bad\\nKind: pull_request_body\\nRepo: RainierFacilitySolutions/rainier-app\\nAuthor: Kronelius (User)\\nURL: https://github.com/RainierFacilitySolutions/rainier-app/pull/3\\nTitle: Bulk bar UX: Accounts selection + matched styling with Contacts\\nBody:\\n## Summary\\n- Add checkbox selection + bulk Archive bar to the **Accounts** tab so it matches the Contacts pattern\\n- Match Tag picker styling to the Assign owner select: 280px width, gradient border, 42px height, primary text color when selections are made\\n- Standardize bulk-bar `min-height` to 60px so toggling between Contacts and Accounts is seamless\\n- Style **Apply tags** and **Archive** as `btn-primary` to match the **+ Add Contact** button\\n- Toast `\\\"Tags applied\\\"` on Apply tags\\n- Tag picker is fixed-width so chips wrap to a new line instead of expanding the bar horizontally\\n- Tag picker placeholder updated from `\\\"Tag selected\u2026\\\"` to `\\\"Select tag\\\"`\\n\\n## Test plan\\n- [ ] Visit `/contacts`, select multiple contacts \u2192 bulk bar enables; Tag picker, Assign owner, Apply tags, Archive, Cancel all visible at matching height\\n- [ ] Pick a tag \u2192 Apply tags fires `\\\"Tags applied\\\"` toast; tags applied to selected co\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-969b5c176b818e11\",\n    \"filename\": \"app/src/index.css\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 16,\n    \"deletions\": 3,\n    \"changes\": 19,\n    \"blob_url\": \"https://github.com/RainierFacilitySolutions/rainier-app/blob/03f5a30f021626f797af45d3d520ceba53fc4629/app%2Fsrc%2Findex.css\"\n  },\n  {\n    \"id\": \"github-pr-file-file-877267952cddf9ff\",\n    \"filename\": \"app/src/pages/Clients.jsx\",\n    \"label\": \"ui_or_frontend\",\n    \"status\": \"modified\",\n    \"additions\": 59,\n    \"deletions\": 4,\n    \"changes\": 63,\n    \"blob_url\": \"htt\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "comment-chain-pattern-bad_chains-0857f8d6532cc44d", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 324668, "scanner": "foundry_dataset", "fingerprint": "685e0460abcc094e79644bdca5df4b1a6ef88fa771e3cb10db331ca834e34e42", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 3, "docs_or_claims": 1, "ui_or_frontend": 4, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 29, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 5, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 5, "thread_has_comment_chain": 1, "comment_chain_links_commit": 3, "comment_chain_touches_file": 5, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 17, "node_types": {"repo": 1, "commit": 3, "thread": 1, "comment": 1, "pr_file": 5, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#4", "issue_number": "4", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-a4dc0ad3b6434e00", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"docs_or_claims": 4, "ui_or_frontend": 16}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#4\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#4\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 4\nGraph consistency label: weak_supervision_needs_review\nNodes: 17\nEdges: 29\nNode types: {'pr_file': 5, 'commit': 3, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 5, 'comment_chain_touches_file': 5, 'issue_chain_touches_file': 5, 'comment_chain_links_commit': 3, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'ui_or_frontend': 4, 'bug_fix': 3, 'claimed_resolved_unverified': 3, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'docs_or_claims': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-22b6b5330cad6f69", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_fake_real_gap", "level": "error", "message": {"text": "Foundry mined mock as real or placeholder: RainierFacilitySolutions/rainier-app"}, "properties": {"repobilityId": 324667, "scanner": "foundry_dataset", "fingerprint": "1aea1995f234eefde917ba9052b4ae1b72521972b23e6fb5c9fbe7b3229888f3", "category": "practices", "severity": "critical", "confidence": 0.82, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Mock, sample, placeholder, or self-attested behavior treated as real", "intent": "Hard negatives for fake completeness and missing real data paths.", "labels": {"bug_fix": 4, "ui_or_frontend": 2, "mock_placeholder": 1, "claimed_resolved_unverified": 3, "issue_or_pull_request_thread": 1, "human_reported_issue_then_fix_attempt": 1, "thread_has_human_issue_and_fix_context": 2}, "source": "graph_query_export", "motif_id": "mock_as_real_or_placeholder", "outcomes": {"claimed_resolved_unverified": 6}, "polarity": "bad", "query_id": "mock_as_real_or_placeholder", "severity": "critical", "ci_labels": {}, "synthetic": false, "edge_count": 21, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 2, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 2, "thread_has_comment_chain": 1, "comment_chain_links_commit": 4, "comment_chain_touches_file": 2, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 15, "node_types": {"repo": 1, "commit": 4, "thread": 1, "comment": 1, "pr_file": 2, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "RainierFacilitySolutions/rainier-app#3", "issue_number": "3", "quality_tiers": {"weak_supervision": 3}, "repo_full_name": "RainierFacilitySolutions/rainier-app", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-bf43e14191c787e9", "graph_gold_label": "weak_supervision_needs_review", "changed_file_labels": {"ui_or_frontend": 8}}, "text": "Graph query export: Mock, sample, placeholder, or self-attested behavior treated as real\nQuery id: mock_as_real_or_placeholder\nQuery type: motif_query\nIntent: Hard negatives for fake completeness and missing real data paths.\nMotif: mock_as_real_or_placeholder\nTraining usage: hard_negative\nGraph gold label: weak_supervision_needs_review\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#3\nEvidence:\nGraph motif: Mock, sample, placeholder, or self-attested behavior treated as real\nMotif id: mock_as_real_or_placeholder\nPolarity: bad\nTraining usage: hard_negative\nSeverity: critical\nRepo: RainierFacilitySolutions/rainier-app\nThread: RainierFacilitySolutions/rainier-app#3\nGraph gold label: weak_supervision_needs_review\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: RainierFacilitySolutions/rainier-app#3\nRepo: RainierFacilitySolutions/rainier-app\nIssue/PR number: 3\nGraph consistency label: weak_supervision_needs_review\nNodes: 15\nEdges: 21\nNode types: {'commit': 4, 'link_quality': 3, 'pr_file': 2, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'comment_chain_links_commit': 4, 'chain_has_link_quality': 3, 'thread_touches_file': 2, 'comment_chain_touches_file': 2, 'issue_chain_touches_file': 2, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'bug_fix': 4, 'claimed_resolved_unverified': 3, 'ui_or_frontend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'mock_placeholder': 1, 'human_reported_issue_then_fix_attempt': 1}\nOutcomes: {'claimed_resolved_unverified': 6}\nQuality tiers: {'weak_supervision': 3}\nCI labels: {}\nCurriculum targets:\n- Train real-data plumbing and mock-removal tasks from source to UI.\n- Use as hard negatives for dashboards or apps claiming real runs without provenance.\nAssumption checks:\n- Is user-visible behavior backed by real storage/API/CI artifacts?\n- Are placeholders, sample data, or generated claims still in a production path?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/RainierFacilitySolutions/rainier-app", "source_id": "graph-query-motif_query-6e08f9b3a23f3675", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/mock_as_real_or_placeholder/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "RainierFacilitySolutions/rainier-app", "source_dataset": "graph_queries/mock_as_real_or_placeholder", "training_usage": "hard_negative"}}}, {"ruleId": "scanner-166dff3c3df6a10e", "level": "warning", "message": {"text": "ORM models found but no DB engine detected"}, "properties": {"repobilityId": "cda36de65e114635", "scanner": "scanner-primary", "fingerprint": "166dff3c3df6a10e", "layer": "data", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-259ce83cd671d8c3", "level": "error", "message": {"text": "Possible secret in app/scripts/create-auth-users.mjs"}, "properties": {"repobilityId": "2599270770eab3f9", "scanner": "scanner-primary", "fingerprint": "259ce83cd671d8c3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/scripts/create-auth-users.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-c25effe7e2242c13", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in mockups/messaging-mixed/option-1-pure-timeline.html:738"}, "properties": {"repobilityId": "eac617c843a8af76", "scanner": "scanner-primary", "fingerprint": "c25effe7e2242c13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mockups/messaging-mixed/option-1-pure-timeline.html"}, "region": {"startLine": 738}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-ac9bc4ab78fffe32", "level": "note", "message": {"text": "Very large file: app/src/store/reducer.js (2782 lines)"}, "properties": {"repobilityId": "0e1cb61e22ea62f6", "scanner": "scanner-primary", "fingerprint": "ac9bc4ab78fffe32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cca16da8cf8413f7", "level": "note", "message": {"text": "Very large file: app/src/store/selectors.js (1159 lines)"}, "properties": {"repobilityId": "04556d40dd2a55da", "scanner": "scanner-primary", "fingerprint": "cca16da8cf8413f7", "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": "e5d3e58cf93b76c5", "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": "6a4be7e5e1400955", "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": "8cd0730e9254c6ec", "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": "33cd95874a7d7c60", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "3380b1ada67104ae", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "63421393accb946b", "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": "73445846ab6ecbc6", "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": "b0e62290aee65ee6", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a06906fa3628fe8", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/eslint.config.js:34"}, "properties": {"repobilityId": "f96444370e319af8", "scanner": "scanner-primary", "fingerprint": "8a06906fa3628fe8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9600a69fbc5621b3", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/api/unsubscribe.js:1"}, "properties": {"repobilityId": "c317c456568c46ed", "scanner": "scanner-primary", "fingerprint": "9600a69fbc5621b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9699aa8a07a48afd", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/settings/[...path].js:1"}, "properties": {"repobilityId": "fcb0808502aea4ab", "scanner": "scanner-primary", "fingerprint": "9699aa8a07a48afd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a619def193408ec6", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/email/send.js:1"}, "properties": {"repobilityId": "c0e8e7c9b9047639", "scanner": "scanner-primary", "fingerprint": "a619def193408ec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecc8e1efe2348ba4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/email/health.js:5"}, "properties": {"repobilityId": "7621cfbf8f23315f", "scanner": "scanner-primary", "fingerprint": "ecc8e1efe2348ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85a3fc90d2e91998", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/workspaces/[...path].js:1"}, "properties": {"repobilityId": "919c953e41cf2410", "scanner": "scanner-primary", "fingerprint": "85a3fc90d2e91998", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26ebfb9dcc001775", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/marketing/run.js:1"}, "properties": {"repobilityId": "552db4e7a2a05d68", "scanner": "scanner-primary", "fingerprint": "26ebfb9dcc001775", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3172cd94ade7ab78", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/_lib/email.js:6"}, "properties": {"repobilityId": "faa401acb66b5e97", "scanner": "scanner-primary", "fingerprint": "3172cd94ade7ab78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c04828643e734b48", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/gmailPoll.js:1"}, "properties": {"repobilityId": "b6ac65dbb6a0b85f", "scanner": "scanner-primary", "fingerprint": "c04828643e734b48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61aa945b57aafa4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/google.js:164"}, "properties": {"repobilityId": "38bc6958fb8bcc09", "scanner": "scanner-primary", "fingerprint": "61aa945b57aafa4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab6f7711c1663fa0", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/sender.js:18"}, "properties": {"repobilityId": "5bb9d5c49fa81313", "scanner": "scanner-primary", "fingerprint": "ab6f7711c1663fa0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8cb90ba8e8e3208", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/ingestEmail.js:1"}, "properties": {"repobilityId": "12d999cdc59593e2", "scanner": "scanner-primary", "fingerprint": "f8cb90ba8e8e3208", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb6ba1d639a207c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/_lib/oauthWorkspaces.js:1"}, "properties": {"repobilityId": "b6c5b791947a3b27", "scanner": "scanner-primary", "fingerprint": "cb6ba1d639a207c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-076eac5bf93a17b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/_lib/users.js:46"}, "properties": {"repobilityId": "5e93265865074103", "scanner": "scanner-primary", "fingerprint": "076eac5bf93a17b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21c60b977d4f3cce", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/_lib/marketing/compliance.js:3"}, "properties": {"repobilityId": "707ddf5e8896399d", "scanner": "scanner-primary", "fingerprint": "21c60b977d4f3cce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9311ca6c3610744d", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/pdf.js:18"}, "properties": {"repobilityId": "1c7b657c170f3f95", "scanner": "scanner-primary", "fingerprint": "9311ca6c3610744d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-19e64f45c7095a45", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/quotes/pdf.js:1"}, "properties": {"repobilityId": "5b37f3d920d8c69c", "scanner": "scanner-primary", "fingerprint": "19e64f45c7095a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6a99b4de43629fe", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/docx.js:11"}, "properties": {"repobilityId": "6a57ffde788efd53", "scanner": "scanner-primary", "fingerprint": "e6a99b4de43629fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c8e4a20bbce64bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/_lib/quotes/docx.js:3"}, "properties": {"repobilityId": "ec9372049439efcc", "scanner": "scanner-primary", "fingerprint": "2c8e4a20bbce64bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7514e2c0ce9e9208", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/api/_lib/quotes/store.js:41"}, "properties": {"repobilityId": "9f930fff7f9c58ee", "scanner": "scanner-primary", "fingerprint": "7514e2c0ce9e9208", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-39d6c4b0d84e854e", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/_lib/forms/notify.js:5"}, "properties": {"repobilityId": "4004cc662a1bf84a", "scanner": "scanner-primary", "fingerprint": "39d6c4b0d84e854e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61a7506924689171", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/public/pay/[...path].js:1"}, "properties": {"repobilityId": "538eb51227ffb93e", "scanner": "scanner-primary", "fingerprint": "61a7506924689171", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1eeeca959d0aa14", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/inbox/inbound.js:1"}, "properties": {"repobilityId": "683cd1f38d0e484b", "scanner": "scanner-primary", "fingerprint": "d1eeeca959d0aa14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90bcf583032af082", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/inbox/ingest.js:1"}, "properties": {"repobilityId": "e0d30ffdc5d0a92e", "scanner": "scanner-primary", "fingerprint": "90bcf583032af082", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc2ff592bf5fdc68", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/inbox/connect/google.js:1"}, "properties": {"repobilityId": "7ecf1d1b0c5b011f", "scanner": "scanner-primary", "fingerprint": "bc2ff592bf5fdc68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cf37c580d98471d", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/api/quotes/[...path].js:1"}, "properties": {"repobilityId": "e5c178ae6c256c59", "scanner": "scanner-primary", "fingerprint": "8cf37c580d98471d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bed8d7580cc48b51", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/forms/[[...path]].js:1"}, "properties": {"repobilityId": "5e9176792515a12a", "scanner": "scanner-primary", "fingerprint": "bed8d7580cc48b51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb1bbad714ef2a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/scripts/import-keys.mjs:1"}, "properties": {"repobilityId": "3fd024670d25d294", "scanner": "scanner-primary", "fingerprint": "dcb1bbad714ef2a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fda8a97bd168d819", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/import-keys.mjs:48"}, "properties": {"repobilityId": "7851eea480b78711", "scanner": "scanner-primary", "fingerprint": "fda8a97bd168d819", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43ef43ce9a8387d0", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/scripts/seed-snapshot-sample.mjs:1"}, "properties": {"repobilityId": "1d507d99f790ec67", "scanner": "scanner-primary", "fingerprint": "43ef43ce9a8387d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2803e64014250b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/scripts/verify-auth.mjs:1"}, "properties": {"repobilityId": "4472711167c726a2", "scanner": "scanner-primary", "fingerprint": "a2803e64014250b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b89c2cf070ef9dd", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/scripts/dump-pdf-text.mjs:7"}, "properties": {"repobilityId": "700c0ec43ce445c9", "scanner": "scanner-primary", "fingerprint": "6b89c2cf070ef9dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9155a2bcbee0dd3a", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/scripts/diag-quotes.mjs:26"}, "properties": {"repobilityId": "7ab3fcff1ff62fec", "scanner": "scanner-primary", "fingerprint": "9155a2bcbee0dd3a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c531432b096769dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/scripts/test-email-route.mjs:1"}, "properties": {"repobilityId": "d315b1efe36a3ccd", "scanner": "scanner-primary", "fingerprint": "c531432b096769dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f13b401c275952df", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/scripts/test-email.mjs:1"}, "properties": {"repobilityId": "601faf3dd6390fc3", "scanner": "scanner-primary", "fingerprint": "f13b401c275952df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34a8060dda943489", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/scripts/push-financials.mjs:1"}, "properties": {"repobilityId": "b2ff83a361f0d9b4", "scanner": "scanner-primary", "fingerprint": "34a8060dda943489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b992e3a0da203226", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/push-financials.mjs:39"}, "properties": {"repobilityId": "d96cdb2f8406f038", "scanner": "scanner-primary", "fingerprint": "b992e3a0da203226", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e15052290fb587c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/scripts/diag-prod.mjs:12"}, "properties": {"repobilityId": "256e1edb4f629e0e", "scanner": "scanner-primary", "fingerprint": "4e15052290fb587c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98e00cb633ee08d9", "level": "none", "message": {"text": "Commented-code block (11 lines) in app/src/components/MarketingScheduler.jsx:4"}, "properties": {"repobilityId": "f35e8409154bfcb0", "scanner": "scanner-primary", "fingerprint": "98e00cb633ee08d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e473d044cc0000dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/TwilioInboundListener.jsx:1"}, "properties": {"repobilityId": "df7e3212c87eb122", "scanner": "scanner-primary", "fingerprint": "e473d044cc0000dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4eee30bd369494c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/BulkActionBar.jsx:3"}, "properties": {"repobilityId": "0f7cb92be719d8f2", "scanner": "scanner-primary", "fingerprint": "f4eee30bd369494c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b47c699e84df6c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/components/Sidebar.jsx:10"}, "properties": {"repobilityId": "dbc319144165b5f3", "scanner": "scanner-primary", "fingerprint": "1b47c699e84df6c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9288019184c6cea", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/src/components/GoogleWorkspacesSection.jsx:3"}, "properties": {"repobilityId": "f17182e63e0e7cde", "scanner": "scanner-primary", "fingerprint": "a9288019184c6cea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e0ae1aa6387cd34", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/components/ClientNamePicker.jsx:4"}, "properties": {"repobilityId": "cf19ba1e0189866a", "scanner": "scanner-primary", "fingerprint": "7e0ae1aa6387cd34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-187b2c9cadc0310c", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/src/components/ReminderScheduler.jsx:4"}, "properties": {"repobilityId": "47cae802725ee2e8", "scanner": "scanner-primary", "fingerprint": "187b2c9cadc0310c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb7e0ac68a97e3f9", "level": "none", "message": {"text": "Commented-code block (13 lines) in app/src/components/CrewPicker.jsx:7"}, "properties": {"repobilityId": "0a53505214351076", "scanner": "scanner-primary", "fingerprint": "cb7e0ac68a97e3f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f4d8868a5201737", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/components/ConnectInboxModal.jsx:9"}, "properties": {"repobilityId": "f402b2775c65c5ad", "scanner": "scanner-primary", "fingerprint": "1f4d8868a5201737", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb85e50c78b3cd06", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/AddContactModal.jsx:105"}, "properties": {"repobilityId": "8c1de5b1cf413a33", "scanner": "scanner-primary", "fingerprint": "fb85e50c78b3cd06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5eea51a4abc6b996", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/NotificationListener.jsx:9"}, "properties": {"repobilityId": "a4aca9bcd39953b8", "scanner": "scanner-primary", "fingerprint": "5eea51a4abc6b996", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94f543477546e2c7", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/components/GmailConnectInstructions.jsx:6"}, "properties": {"repobilityId": "75cbc80b436edf7b", "scanner": "scanner-primary", "fingerprint": "94f543477546e2c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54c1f16e2d4735eb", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/components/WorkspacePicker.jsx:5"}, "properties": {"repobilityId": "2b0995b1e1c994fd", "scanner": "scanner-primary", "fingerprint": "54c1f16e2d4735eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccc672c75f567e44", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/components/SignatureCapture.jsx:4"}, "properties": {"repobilityId": "bd7edcaf5b302eb7", "scanner": "scanner-primary", "fingerprint": "ccc672c75f567e44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7056fc0af1bf7e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/ConversationThreadList.jsx:179"}, "properties": {"repobilityId": "d16f143363d0498c", "scanner": "scanner-primary", "fingerprint": "e7056fc0af1bf7e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2c1f5346c83b0de", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/src/components/ConnectEmailProviderModal.jsx:1"}, "properties": {"repobilityId": "d89b427544b5d1d8", "scanner": "scanner-primary", "fingerprint": "a2c1f5346c83b0de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28fa58bc6828c34b", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/components/ServicePicker.jsx:6"}, "properties": {"repobilityId": "8e9f5aade3792ec2", "scanner": "scanner-primary", "fingerprint": "28fa58bc6828c34b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a8281873f8b6c12", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/src/components/InboundListener.jsx:1"}, "properties": {"repobilityId": "0832798b9dffc1a2", "scanner": "scanner-primary", "fingerprint": "2a8281873f8b6c12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f25e64932a2804db", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/TagPicker.jsx:8"}, "properties": {"repobilityId": "dbf000c6cc447f14", "scanner": "scanner-primary", "fingerprint": "f25e64932a2804db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec30fbee08a43de4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/FilterSelect.jsx:3"}, "properties": {"repobilityId": "8c69a6f4e1e3b068", "scanner": "scanner-primary", "fingerprint": "ec30fbee08a43de4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b890ce1238dbc2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/CsvImportModal.jsx:137"}, "properties": {"repobilityId": "9f8b097164d5c046", "scanner": "scanner-primary", "fingerprint": "2b890ce1238dbc2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-898a9904ad99af7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/Icon.jsx:68"}, "properties": {"repobilityId": "4a8124b2b51548c2", "scanner": "scanner-primary", "fingerprint": "898a9904ad99af7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f6764890c1b688d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/PipelineBoard.jsx:38"}, "properties": {"repobilityId": "09c70b86202b2c71", "scanner": "scanner-primary", "fingerprint": "2f6764890c1b688d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1849c007c4ec5d1", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/components/AddWorkspaceModal.jsx:3"}, "properties": {"repobilityId": "00073d3f737c7425", "scanner": "scanner-primary", "fingerprint": "d1849c007c4ec5d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccf706a70a98a01d", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quote_v1` in app/src/components/CreateQuoteModal.jsx:38"}, "properties": {"repobilityId": "f1bd5b208e84f2ff", "scanner": "scanner-primary", "fingerprint": "ccf706a70a98a01d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-14255e4e595abb2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/components/ConnectMarketingInboxModal.jsx:1"}, "properties": {"repobilityId": "ab2cd163853c4cd1", "scanner": "scanner-primary", "fingerprint": "14255e4e595abb2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51d499c875ed5ac8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/twilio.js:50"}, "properties": {"repobilityId": "e82e42d859095163", "scanner": "scanner-primary", "fingerprint": "51d499c875ed5ac8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63fc1472bc2d5749", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/lib/push.js:10"}, "properties": {"repobilityId": "75e811ce13f58b67", "scanner": "scanner-primary", "fingerprint": "63fc1472bc2d5749", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76854e1ebef22d40", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/push.js:151"}, "properties": {"repobilityId": "215ebe8aae9e9ae2", "scanner": "scanner-primary", "fingerprint": "76854e1ebef22d40", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f36b1e4dc4c17bc", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/src/lib/email.js:9"}, "properties": {"repobilityId": "b84ca9b94d2d0fb8", "scanner": "scanner-primary", "fingerprint": "1f36b1e4dc4c17bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2b0e054c3894005", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/email.js:78"}, "properties": {"repobilityId": "d8bc498ef6606afb", "scanner": "scanner-primary", "fingerprint": "b2b0e054c3894005", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e09a9f70271b2479", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/lib/roles.js:6"}, "properties": {"repobilityId": "9dbe4b7e95921b1b", "scanner": "scanner-primary", "fingerprint": "e09a9f70271b2479", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adb0956f865f78eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/lib/attachments.js:159"}, "properties": {"repobilityId": "8ab39d136c963904", "scanner": "scanner-primary", "fingerprint": "adb0956f865f78eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d09f7529a70bc918", "level": "none", "message": {"text": "Commented-code block (18 lines) in app/src/lib/marketingScheduler.js:8"}, "properties": {"repobilityId": "b01cd978a34447c2", "scanner": "scanner-primary", "fingerprint": "d09f7529a70bc918", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93093080b9b5b477", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/lib/reminderScheduler.js:6"}, "properties": {"repobilityId": "e5d77eb9903fb33f", "scanner": "scanner-primary", "fingerprint": "93093080b9b5b477", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a02742c1642688b", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/lib/notifications.js:5"}, "properties": {"repobilityId": "a988a0c8856208df", "scanner": "scanner-primary", "fingerprint": "3a02742c1642688b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e7b0fef407bf85f", "level": "note", "message": {"text": "Legacy-named symbol `rainier_quotes_stub_v2` in app/src/lib/quotesApi.js:85"}, "properties": {"repobilityId": "64822b444c1782a7", "scanner": "scanner-primary", "fingerprint": "2e7b0fef407bf85f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c721fa6be4851e0b", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/lib/connectedInboxes.js:15"}, "properties": {"repobilityId": "53f012dd81c7449e", "scanner": "scanner-primary", "fingerprint": "c721fa6be4851e0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9396950f7e1b701d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/connectedInboxes.js:113"}, "properties": {"repobilityId": "6a5c3a6ade02c6f2", "scanner": "scanner-primary", "fingerprint": "9396950f7e1b701d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5b0489695f3158e8", "level": "note", "message": {"text": "Legacy-named symbol `rainier_forms_stub_v1` in app/src/lib/formsApi.js:72"}, "properties": {"repobilityId": "44688712f0b2be00", "scanner": "scanner-primary", "fingerprint": "5b0489695f3158e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ff470cd27e2d723", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/lib/formsApi.js:4"}, "properties": {"repobilityId": "3c334f2b149b5649", "scanner": "scanner-primary", "fingerprint": "4ff470cd27e2d723", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d8eaf5f1c678053", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/lib/signature.js:3"}, "properties": {"repobilityId": "342ea8a0859b4007", "scanner": "scanner-primary", "fingerprint": "0d8eaf5f1c678053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c49b81d9c4ea7da7", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/lib/oauthWorkspaces.js:1"}, "properties": {"repobilityId": "cefcd95cb3849060", "scanner": "scanner-primary", "fingerprint": "c49b81d9c4ea7da7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b3991c860217a91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/src/lib/oauthWorkspaces.js:56"}, "properties": {"repobilityId": "5f0c9073df641400", "scanner": "scanner-primary", "fingerprint": "7b3991c860217a91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02855829956d1679", "level": "note", "message": {"text": "Legacy-named symbol `rainier_integrations_stub_v1` in app/src/lib/integrationsApi.js:25"}, "properties": {"repobilityId": "b82880eef743036d", "scanner": "scanner-primary", "fingerprint": "02855829956d1679", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2a3c65108c85d3d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/lib/forms/formula.js:1"}, "properties": {"repobilityId": "1b40f387e5a783d5", "scanner": "scanner-primary", "fingerprint": "2a3c65108c85d3d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb699b3532397c02", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/pages/Keys.jsx:335"}, "properties": {"repobilityId": "83f1af1b6583f418", "scanner": "scanner-primary", "fingerprint": "eb699b3532397c02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69ecbed17e6bf939", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/pages/Messaging.jsx:1"}, "properties": {"repobilityId": "e7b85adaa1d7706f", "scanner": "scanner-primary", "fingerprint": "69ecbed17e6bf939", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c6813bf9c86fbf8", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/pages/ContactDetail.jsx:95"}, "properties": {"repobilityId": "965901cde080bf52", "scanner": "scanner-primary", "fingerprint": "9c6813bf9c86fbf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfc75904956f8338", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/pages/Login.jsx:10"}, "properties": {"repobilityId": "11691cd1c1989a3a", "scanner": "scanner-primary", "fingerprint": "cfc75904956f8338", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dedb7d42c7952ae7", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/pages/settings/Integrations.jsx:6"}, "properties": {"repobilityId": "d6250cce4a19a687", "scanner": "scanner-primary", "fingerprint": "dedb7d42c7952ae7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0fd5d71b8f0f8b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/pages/settings/Tags.jsx:13"}, "properties": {"repobilityId": "bb5fa8551d48a012", "scanner": "scanner-primary", "fingerprint": "d0fd5d71b8f0f8b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a53fd530e0d69331", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/pages/settings/QuickStart.jsx:12"}, "properties": {"repobilityId": "3d70dab986f978af", "scanner": "scanner-primary", "fingerprint": "a53fd530e0d69331", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-747f955387dd9b0a", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/pages/marketing/SequencesTab.jsx:1"}, "properties": {"repobilityId": "ec5692f93e3a8b13", "scanner": "scanner-primary", "fingerprint": "747f955387dd9b0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a40a614f885655b", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/src/pages/marketing/InboxesTab.jsx:1"}, "properties": {"repobilityId": "247aa27f916138ce", "scanner": "scanner-primary", "fingerprint": "5a40a614f885655b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab7633f0742064ad", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceEditorPanel.jsx:1"}, "properties": {"repobilityId": "a8e7b9443e49d570", "scanner": "scanner-primary", "fingerprint": "ab7633f0742064ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5646282aac9c15e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/src/pages/marketing/StepEditorModal.jsx:1"}, "properties": {"repobilityId": "854812f6d0fb673a", "scanner": "scanner-primary", "fingerprint": "5646282aac9c15e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-243cd9d29988fa56", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/pages/marketing/SettingsTab.jsx:1"}, "properties": {"repobilityId": "e3a03183653ddba7", "scanner": "scanner-primary", "fingerprint": "243cd9d29988fa56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e1a96370863b742", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/pages/marketing/RepliesTab.jsx:1"}, "properties": {"repobilityId": "9c343a11731adebc", "scanner": "scanner-primary", "fingerprint": "2e1a96370863b742", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bc21b33eec72871", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/src/pages/marketing/SequenceContactsModal.jsx:1"}, "properties": {"repobilityId": "013e79c81fe169fb", "scanner": "scanner-primary", "fingerprint": "3bc21b33eec72871", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecbba9f6411b4f60", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/hooks/useAuth.js:6"}, "properties": {"repobilityId": "bd618664a5673847", "scanner": "scanner-primary", "fingerprint": "ecbba9f6411b4f60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b84f0a526d6c1d29", "level": "none", "message": {"text": "Commented-code block (11 lines) in app/src/store/sync.js:1"}, "properties": {"repobilityId": "16b64e8a831de611", "scanner": "scanner-primary", "fingerprint": "b84f0a526d6c1d29", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2aa27c2dbe60d89", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/store/reducer.js:241"}, "properties": {"repobilityId": "cdd2c2d387e68810", "scanner": "scanner-primary", "fingerprint": "c2aa27c2dbe60d89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b98180f71ba9e1ea", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/src/store/persist.js:1"}, "properties": {"repobilityId": "6c0e3419074ae676", "scanner": "scanner-primary", "fingerprint": "b98180f71ba9e1ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df3f3a1595ea2798", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/src/store/selectors.js:184"}, "properties": {"repobilityId": "6cff5e1e420abd11", "scanner": "scanner-primary", "fingerprint": "df3f3a1595ea2798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87acb4066071a15a", "level": "note", "message": {"text": "19 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "b1f30c58de7ffb20", "scanner": "scanner-primary", "fingerprint": "87acb4066071a15a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-f141f05247496ca9", "level": "warning", "message": {"text": "Frontend route `/f/:slug` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "1c84296d4d9cd72a", "scanner": "scanner-primary", "fingerprint": "f141f05247496ca9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-edf7d4e8c118465e", "level": "warning", "message": {"text": "Frontend route `/quote/:token` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "fa995584f48b81e7", "scanner": "scanner-primary", "fingerprint": "edf7d4e8c118465e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-52d8f58fbe6fd39c", "level": "warning", "message": {"text": "Frontend route `schedule` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "41e0e4bb3679093d", "scanner": "scanner-primary", "fingerprint": "52d8f58fbe6fd39c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-15b2464cba7a6a4b", "level": "warning", "message": {"text": "Frontend route `schedule/:jobId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "d52a36defa114f61", "scanner": "scanner-primary", "fingerprint": "15b2464cba7a6a4b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-80dbec62e8fb32b2", "level": "warning", "message": {"text": "Frontend route `contacts` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "edadedc993e8d7e5", "scanner": "scanner-primary", "fingerprint": "80dbec62e8fb32b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-bff1098e81337ce8", "level": "warning", "message": {"text": "Frontend route `contacts/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "b37789524d79a34f", "scanner": "scanner-primary", "fingerprint": "bff1098e81337ce8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-265f87fd3fdffc5f", "level": "warning", "message": {"text": "Frontend route `clients` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "24e81c18644d6b37", "scanner": "scanner-primary", "fingerprint": "265f87fd3fdffc5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f7f5cc720f66aaa5", "level": "warning", "message": {"text": "Frontend route `clients/contact/:contactId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "c1f48867dce53e29", "scanner": "scanner-primary", "fingerprint": "f7f5cc720f66aaa5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b291bb808d7c98a1", "level": "warning", "message": {"text": "Frontend route `clients/:clientId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "1e6bda0967d74dc4", "scanner": "scanner-primary", "fingerprint": "b291bb808d7c98a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-5014945d9c77ca17", "level": "warning", "message": {"text": "Frontend route `pipeline` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "8cda076b6951dbe5", "scanner": "scanner-primary", "fingerprint": "5014945d9c77ca17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4cb130e84fe2acc2", "level": "warning", "message": {"text": "Frontend route `invoices` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "aa2801a2d1aba4c3", "scanner": "scanner-primary", "fingerprint": "4cb130e84fe2acc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-68f41b3960f990f6", "level": "warning", "message": {"text": "Frontend route `invoices/:invoiceId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "6fcfbe967e564399", "scanner": "scanner-primary", "fingerprint": "68f41b3960f990f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6f7e5600cbde2a55", "level": "warning", "message": {"text": "Frontend route `reminders` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "5b8129dd54e68606", "scanner": "scanner-primary", "fingerprint": "6f7e5600cbde2a55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-1c6d831bcebd7d1c", "level": "warning", "message": {"text": "Frontend route `messaging` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "c3d120ac93c86522", "scanner": "scanner-primary", "fingerprint": "1c6d831bcebd7d1c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b9e646827025b0f2", "level": "warning", "message": {"text": "Frontend route `messaging/:conversationId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "ef5837a422195d86", "scanner": "scanner-primary", "fingerprint": "b9e646827025b0f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fd31c2e1250dc2e9", "level": "warning", "message": {"text": "Frontend route `marketing` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "1c2704ad71c87f95", "scanner": "scanner-primary", "fingerprint": "fd31c2e1250dc2e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-fe208af6b2f90499", "level": "warning", "message": {"text": "Frontend route `quotes` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "a6294801fdb64507", "scanner": "scanner-primary", "fingerprint": "fe208af6b2f90499", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-daf03bb770afe988", "level": "warning", "message": {"text": "Frontend route `quotes/:id` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "a9849714200ef69c", "scanner": "scanner-primary", "fingerprint": "daf03bb770afe988", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-39a0685b374d6553", "level": "warning", "message": {"text": "Frontend route `keys` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "bebba72fb9918fec", "scanner": "scanner-primary", "fingerprint": "39a0685b374d6553", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-e137bfc494f21956", "level": "warning", "message": {"text": "Frontend route `complaints` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "197f39ceea1ea436", "scanner": "scanner-primary", "fingerprint": "e137bfc494f21956", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-c22ff55d4a509109", "level": "warning", "message": {"text": "Frontend route `reviews` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "e9246db7104fec7f", "scanner": "scanner-primary", "fingerprint": "c22ff55d4a509109", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-6922209b0ae9f740", "level": "warning", "message": {"text": "Frontend route `forms` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "058004fbc8907a6b", "scanner": "scanner-primary", "fingerprint": "6922209b0ae9f740", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cbe7afebb7ae1ff5", "level": "warning", "message": {"text": "Frontend route `forms/:formId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "f589049e367dd625", "scanner": "scanner-primary", "fingerprint": "cbe7afebb7ae1ff5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-60bf23c2fad66c28", "level": "warning", "message": {"text": "Frontend route `forms/:formId/submissions` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "555cc6e53f8c1000", "scanner": "scanner-primary", "fingerprint": "60bf23c2fad66c28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-8bd85a07c2006bf1", "level": "warning", "message": {"text": "Frontend route `forms/:formId/submissions/:submissionId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "4ccaf12e897dce61", "scanner": "scanner-primary", "fingerprint": "8bd85a07c2006bf1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-de91d7d2bd6ca8b8", "level": "warning", "message": {"text": "Frontend route `forms/:formId/versions` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "4960bed817412f7d", "scanner": "scanner-primary", "fingerprint": "de91d7d2bd6ca8b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-80b236aab98596fc", "level": "warning", "message": {"text": "Frontend route `forms/:formId/analytics` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "ae7ed56c4cad17e5", "scanner": "scanner-primary", "fingerprint": "80b236aab98596fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-76dfd773d6f582f8", "level": "warning", "message": {"text": "Frontend route `forms/:formId/integrations` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "576595024872056e", "scanner": "scanner-primary", "fingerprint": "76dfd773d6f582f8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cff3881dee800ff1", "level": "warning", "message": {"text": "Frontend route `settings` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "4f21465d7565e27f", "scanner": "scanner-primary", "fingerprint": "cff3881dee800ff1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-2c79f177babfb6c1", "level": "warning", "message": {"text": "Frontend route `team/:userId` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "8045cbd3b0cc0361", "scanner": "scanner-primary", "fingerprint": "2c79f177babfb6c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-cc93d57ce9cfcf9e", "level": "warning", "message": {"text": "Frontend route `notifications` has no Link/navigate to it \u2014 app/src/App.jsx"}, "properties": {"repobilityId": "97d8704fa40fc883", "scanner": "scanner-primary", "fingerprint": "cc93d57ce9cfcf9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}